⊗jsPmFTFENIn 233 of 505 menu

JavaScript-те функционалдық өрнектердің нюанстары

Function Expression атауы босқа берілген жоқ. Бұл шынымен де солды білдіреді - яғни мұндай функциялар қандай да бір өрнектің бөлігі болып табылады.

Мысалы, біз қандай да бір жолды және атаусыз функцияны қоса аламыз:

let str = 'str' + function() {return 3;}; console.log(str); // шығарады 'strfunction() {return 3;}'

Неге біз 3 санын емес, оған қарамастан беймәлім нәтижені көреміз? Себебі екінші қосылғыш - бұл функцияның жұмыс нәтижесі емес, оның бастапқы коды (біз бұл функцияны шақырған жоқпыз, жай ғана жаздық).

Яғни функционалдық өрнек атауы мұндай функцияның қандай да бір өрнекке қатысатынын білдіреді.

Айнымалыға тағайындау да өрнек болады:

let func = function() { console.log('!'); };

Сондай-ақ, мысалы, функцияны console.log параметрі ретінде жіберуге болады және ол оның бастапқы кодын консольге шығарады - бұл да өрнек болып саналады:

console.log(function() {return 3;});

Бұл неге маңызды: себебі Function Declaration және Function Expression айырмашылығы мүлдем бірінші функция атымен жасалады дегенде емес, ал екіншісі бастапқыда аты жоқ. Бұл дұрыс емес.

Мысал. Міне, бізде атаусыз функция, бірақ сонымен бірге ешбір өрнекке қатыспайды (яғни олмен ешқандай әрекет жүргізілмейді, жай тілмен айтқанда):

/* Бұл функция Function Declaration болады, бірақ синтаксистік қатемен: */ function() { console.log('!'); }

Мұндай код мүлдем қате шығарады! Неге: себебі функция ешбір өрнекке қатыспағандықтан, браузер оны Function Declaration деп санайды, бірақ оның атын таппайды және қате шығарады.

Қате жоғалуы үшін, функцияны қандай да бір өрнектің бөлігі болуға мәжбүр ету керек. Мысалы, оның алдына + операциясын жазайық:

+function() { // мұндай код дұрыс console.log('!'); };

Бұл қалай жұмыс істейді: + операциясының өзі ештеңе істемейді, бұл 3 санының орнына +3 санын жазғанмен бірдей - рұқсат етілген, бірақ ештеңені өзгертпейді.

Бірақ функция жағдайында - өзгертеді. Енді біздің функциямыз жай ғана жазылған емес, өрнекке қатысады. Сондықтан қате болмайды. Функцияның орындалу нәтижесі де болмайды, себебі біз оны жай жазып қойдық, бірақ шақырған жоқпыз.

+ орнына кез келген нәрсені жазуға болады. Мысалы:

-function() { // мұндай код дұрыс console.log('!'); }; !function() { // мұндай код дұрыс console.log('!'); };

Сондай-ақ біз функциямызды дөңгелек жақшаға ала аламыз, бұл жағдайда ол да функционалды өрнек болады:

(function() { // мұндай код дұрыс console.log('!'); });

Көрсетілген функция Function Declaration немесе Function Expression болатынын анықтаңыз:

function func() { console.log('!'); }

Көрсетілген функция Function Declaration немесе Function Expression болатынын анықтаңыз:

let func = function() { console.log('!'); }

Көрсетілген функция Function Declaration немесе Function Expression болатынын анықтаңыз:

+function() { console.log('!'); }

Көрсетілген функция Function Declaration немесе Function Expression болатынын анықтаңыз:

!function func() { console.log('!'); }

Көрсетілген функция Function Declaration немесе Function Expression болатынын анықтаңыз:

-function func() { console.log('!'); }

Көрсетілген функция Function Declaration немесе Function Expression болатынын анықтаңыз:

1 + function func() { console.log('!'); }

Көрсетілген функция Function Declaration немесе Function Expression болатынын анықтаңыз:

(function func() { console.log('!'); })

Көрсетілген функция Function Declaration немесе Function Expression болатынын анықтаңыз:

console.log( function() { console.log('!'); } );
Қазақ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართული한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау