⊗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ščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј