⊗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 для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць