⊗jsPmFTFENIn 233 of 505 menu

Nuanses van funksionele uitdrukkings in JavaScript

Die naam Function Expression is nie sonder rede gegee nie. Dit beteken werklik dat sulke funksies 'n deel is van 'n uitdrukking.

Byvoorbeeld, ons kan 'n string en 'n naamlose funksie bymekaar tel:

let str = 'str' + function() {return 3;}; console.log(str); // sal 'strfunction() {return 3;}' uitvoer

Hoekom sien ons so 'n vreemde resultaat, en nie die nommer 3 nie? Omdat die tweede term nie die resultaat van die funksie se uitvoering is nie, maar die oorspronklike kode daarvan (ons het nie die funksie aangeroep nie, ons het dit net geskryf).

Die naam funksionele uitdrukking dui dus daarop dat so 'n funksie deelneem aan 'n uitdrukking.

Toekenning aan 'n veranderlike is ook 'n uitdrukking:

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

Jy kan ook, byvoorbeeld, die funksie as 'n parameter aan console.log gee en dit sal die oorspronklike kode daarvan na die konsole uitvoer - dit sal ook as 'n uitdrukking beskou word:

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

Hoekom dit belangrik is: want die verskil tussen Function Declaration en Function Expression is glad nie daarin dat die eerste funksie met 'n naam geskep word, en die tweede aanvanklik geen naam het nie. Dit is nie so nie.

Voorbeeld. Hier is 'n funksie sonder naam, maar dit neem deel aan geen uitdrukking nie (dit wil sê daar word geen aksies daarmee uitgevoer nie, eenvoudig gestel):

/* Hierdie funksie sal 'n Function Declaration wees, maar met 'n sintaksfout: */ function() { console.log('!'); }

So 'n kode sal 'n fout gee! Hoekom: aangesien die funksie aan geen uitdrukking deelneem nie, beskou die blaaier dit as 'n Function Declaration, maar vind nie die naam daarvan nie en gee 'n fout.

Om die fout te laat verdwyn, moet jy die funksie deel laat wees van 'n uitdrukking. Byvoorbeeld, skryf 'n + bewerking voor dit:

+function() { // so 'n kode is korrek console.log('!'); };

Hoe dit werk: die bewerking + op sigself doen niks, dit is dieselfde as om in plaas van die nommer 3 +3 te skryf - dit is toelaatbaar, maar verander niks.

Maar in die geval van 'n funksie - verander dit. Nou is ons funksie nie net geskryf nie, maar neem deel aan 'n uitdrukking. Daarom sal daar nou geen fout wees nie. Daar sal ook geen resultaat van die funksie se uitvoering wees nie, aangesien ons dit net geskryf het, maar nie aangeroep het nie.

In plaas van + kan jy enigiets skryf. Byvoorbeeld:

-function() { // so 'n kode is korrek console.log('!'); }; !function() { // so 'n kode is korrek console.log('!'); };

Jy kan ook die funksie tussen ronde hakies plaas, in hierdie geval sal dit ook 'n funksionele uitdrukking word:

(function() { // so 'n kode is korrek console.log('!'); });

Bepaal of die voorgestelde funksie 'n Function Declaration of 'n Function Expression is:

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

Bepaal of die voorgestelde funksie 'n Function Declaration of 'n Function Expression is:

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

Bepaal of die voorgestelde funksie 'n Function Declaration of 'n Function Expression is:

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

Bepaal of die voorgestelde funksie 'n Function Declaration of 'n Function Expression is:

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

Bepaal of die voorgestelde funksie 'n Function Declaration of 'n Function Expression is:

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

Bepaal of die voorgestelde funksie 'n Function Declaration of 'n Function Expression is:

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

Bepaal of die voorgestelde funksie 'n Function Declaration of 'n Function Expression is:

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

Bepaal of die voorgestelde funksie 'n Function Declaration of 'n Function Expression is:

console.log( function() { console.log('!'); } );
Afrikaans
Azə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
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp