⊗jsPmFTFENIn 233 of 505 menu

Nijanse funkcionalnih izraza u JavaScript

Ime Function Expression nije dato bez razloga. Ono zaista znači to - da su takve funkcije deo nekog izraza.

Na primer, možemo sabrati neki string i anonimnu funkciju:

let str = 'str' + function() {return 3;}; console.log(str); // ispisaće 'strfunction() {return 3;}'

Zašto vidimo tako čudan rezultat, a ne broj 3? Zato što drugi sabirak nije rezultat rada funkcije, već njen izvorni kod (jer mi tu funkciju nismo pozvali, već smo je samo napisali).

To jest, ime funkcionalni izraz označava da takva funkcija učestvuje u nekom izrazu.

Dodeljivanje promenljivoj je takođe izraz:

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

Takođe možemo, na primer, proslediti funkciju kao parametar u console.log i ona će ispisati njen izvorni kod u konzolu - to će se takođe smatrati izrazom:

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

Zašto je ovo važno: zato što razlika između Function Declaration i Function Expression uopšte nije u tome što se prva funkcija kreira sa imenom, a druga u početku nema ime. To nije tačno.

Primer. Evo funkcija bez imena, ali istovremeno ne učestvuje ni u kakvom izrazu (tj. s njom se ne vrši nikakva radnja, rečima prostim):

/* Ova funkcija će biti Function Declaration, ali sa sintaksnom greškom: */ function() { console.log('!'); }

Ovakav kod će uopšte dati grešku! Zašto: pošto funkcija ne učestvuje ni u kakvom izrazu, brauzer je smatra Function Declaration-om, ali ne pronalazi njeno ime i izbacuje grešku.

Da bi greška nestala, potrebno je da funkcija postane deo nekog izraza. Na primer, napišimo ispred nje operaciju +:

+function() { // ovakav kod je korektan console.log('!'); };

Kako ovo radi: sama operacija + ništa ne radi, to je isto kao da napišemo umesto broja 3 broj +3 - dopušteno je, ali ništa ne menja.

Ali u slučaju sa funkcijom - menja. Sada naša funkcija više nije samo napisana, već učestvuje u izrazu. Zbog toga greške sada neće biti. Rezultata izvršavanja funkcije takođe neće biti, pošto smo je samo napisali, ali nismo pozvali.

Umesto + možemo napisati bilo šta. Na primer:

-function() { // ovakav kod je korektan console.log('!'); }; !function() { // ovakav kod je korektan console.log('!'); };

Takođe možemo staviti našu funkciju u obične zagrade, u tom slučaju ona takođe postaje funkcionalni izraz:

(function() { // ovakav kod je korektan console.log('!'); });

Odredite da li je predstavljena funkcija Function Declaration ili Function Expression:

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

Odredite da li je predstavljena funkcija Function Declaration ili Function Expression:

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

Odredite da li je predstavljena funkcija Function Declaration ili Function Expression:

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

Odredite da li je predstavljena funkcija Function Declaration ili Function Expression:

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

Odredite da li je predstavljena funkcija Function Declaration ili Function Expression:

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

Odredite da li je predstavljena funkcija Function Declaration ili Function Expression:

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

Odredite da li je predstavljena funkcija Function Declaration ili Function Expression:

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

Odredite da li je predstavljena funkcija Function Declaration ili Function Expression:

console.log( function() { console.log('!'); } );
Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij