⊗jsPmFTFENIn 233 of 505 menu

Nuanțe ale expresiilor funcționale în JavaScript

Denumirea de Function Expression nu este dată întâmplător. Ea într-adevăr înseamnă asta - adică astfel de funcții sunt parte a unei expresii.

De exemplu, putem adăuga un șir de caractere și o funcție fără nume:

let str = 'str' + function() {return 3;}; console.log(str); // va afișa 'strfunction() {return 3;}'

De ce vedem un rezultat atât de ciudat, și nu numărul 3? Pentru că al doilea termen - nu este rezultatul funcției, ci codul ei sursă (noi nu am apelat acea funcție, ci doar am scris-o).

Adică denumirea expresie funcțională indică faptul că o astfel de funcție participă într-o expresie.

Atribuirea unei variabile este de asemenea o expresie:

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

Putem de asemenea, de exemplu, să transmitem funcția ca parametru în console.log și acesta va afișa codul ei sursă în consolă - aceasta va fi considerată de asemenea o expresie:

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

De ce este acest lucru important: pentru că diferența dintre Function Declaration și Function Expression nu este deloc în faptul că prima funcție este creată cu un nume, iar a doua inițial nu are nume. Asta nu este adevărat.

Exemplu. Iată o funcție fără nume, dar care nu participă în nicio expresie (adică nu i se fac nicio acțiune, vorbind simplu):

/* Această funcție va fi Function Declaration, dar cu o eroare sintactică: */ function() { console.log('!'); }

Un astfel de cod va da o eroare! De ce: pentru că funcția nu participă în nicio expresie, browserul o consideră Function Declaration, dar nu îi găsește numele și dă o eroare.

Pentru a elimina eroarea, trebuie să forțăm funcția să devină parte a unei expresii. De exemplu, scriem în fața ei operația +:

+function() { // un astfel de cod este corect console.log('!'); };

Cum funcționează: operația + nu face nimic, este la fel ca și cum am scrie în loc de numărul 3 numărul +3 - este permis, dar nu schimbă nimic.

Dar în cazul funcției - schimbă. Acum funcția noastră nu mai este doar scrisă, ci participă într-o expresie. De aceea nu va mai fi eroare. Nici rezultatul executării funcției nu va fi, pentru că noi doar am scris-o, dar nu am apelat-o.

În loc de + putem scrie orice. De exemplu:

-function() { // un astfel de cod este corect console.log('!'); }; !function() { // un astfel de cod este corect console.log('!'); };

Putem de asemenea să punem funcția noastră în paranteze rotunde, în acest caz ea va deveni de asemenea o expresie funcțională:

(function() { // un astfel de cod este corect console.log('!'); });

Determinați dacă funcția prezentată este Function Declaration sau Function Expression:

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

Determinați dacă funcția prezentată este Function Declaration sau Function Expression:

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

Determinați dacă funcția prezentată este Function Declaration sau Function Expression:

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

Determinați dacă funcția prezentată este Function Declaration sau Function Expression:

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

Determinați dacă funcția prezentată este Function Declaration sau Function Expression:

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

Determinați dacă funcția prezentată este Function Declaration sau Function Expression:

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

Determinați dacă funcția prezentată este Function Declaration sau Function Expression:

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

Determinați dacă funcția prezentată este Function Declaration sau Function Expression:

console.log( function() { console.log('!'); } );
Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge