⊗jsPmFTFENIn 233 of 505 menu

Nuances van functionele expressies in JavaScript

De naam Function Expression is niet zomaar gekozen. Het betekent echt dat dergelijke functies deel uitmaken van een of andere expressie.

We kunnen bijvoorbeeld een string en een anonieme functie optellen:

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

Waarom zien we zo'n vreemd resultaat, en niet het getal 3? Omdat de tweede term niet het resultaat van de functie is, maar haar broncode (we hebben de functie immers niet aangeroepen, maar gewoon geschreven).

Dat wil zeggen, de naam functionele expressie geeft aan dat zo'n functie deelneemt aan een of andere expressie.

Toewijzing aan een variabele is ook een expressie:

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

We kunnen de functie bijvoorbeeld ook als parameter doorgeven aan console.log en deze zal haar broncode in de console weergeven - dit wordt ook beschouwd als een expressie:

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

Waarom dit belangrijk is: omdat het verschil tussen Function Declaration en Function Expression helemaal niet zit in het feit dat de eerste functie met een naam wordt gemaakt, en de tweede aanvankelijk geen naam heeft. Dat is niet zo.

Voorbeeld. Hier is een functie zonder naam, maar ze neemt niet deel aan enige expressie (dat wil zeggen, er worden geen acties met haar ondernomen, om het simpel te zeggen):

/* Deze functie zal een Function Declaration zijn, maar met een syntaxfout: */ function() { console.log('!'); }

Zo'n code zal überhaupt een fout geven! Waarom: omdat de functie niet deelneemt aan enige expressie, beschouwt de browser haar als een Function Declaration, maar vindt haar naam niet en geeft een foutmelding.

Om de fout te laten verdwijnen, moeten we de functie onderdeel laten uitmaken van een of andere expressie. Laten we er bijvoorbeeld een +-operatie voor schrijven:

+function() { // zo'n code is correct console.log('!'); };

Hoe dit werkt: de +-operatie op zich doet niets, het is hetzelfde als het getal 3 te schrijven als +3 - toegestaan, maar verandert niets.

Maar in het geval van een functie - verandert het wel. Nu is onze functie niet zomaar geschreven, maar neemt ze deel aan een expressie. Daarom is er nu geen fout. Het resultaat van het uitvoeren van de functie is er ook niet, omdat we haar gewoon hebben geschreven, maar niet hebben aangeroepen.

In plaats van + kunnen we van alles schrijven. Bijvoorbeeld:

-function() { // zo'n code is correct console.log('!'); }; !function() { // zo'n code is correct console.log('!'); };

We kunnen de functie ook tussen ronde haakjes zetten, in dat geval wordt ze ook een functionele expressie:

(function() { // zo'n code is correct console.log('!'); });

Bepaal of de gepresenteerde functie een Function Declaration of een Function Expression is:

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

Bepaal of de gepresenteerde functie een Function Declaration of een Function Expression is:

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

Bepaal of de gepresenteerde functie een Function Declaration of een Function Expression is:

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

Bepaal of de gepresenteerde functie een Function Declaration of een Function Expression is:

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

Bepaal of de gepresenteerde functie een Function Declaration of een Function Expression is:

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

Bepaal of de gepresenteerde functie een Function Declaration of een Function Expression is:

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

Bepaal of de gepresenteerde functie een Function Declaration of een Function Expression is:

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

Bepaal of de gepresenteerde functie een Function Declaration of een Function Expression is:

console.log( function() { console.log('!'); } );
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren