Genoemde functionele expressies in JavaScript
Stel we hebben de volgende functionele expressie:
let test = function() {
console.log('!');
};
test(); // geeft '!' weer
Laten we onze functie de naam func geven:
let test = function func() {
console.log('!');
};
test();
Zoals je al weet, kan je niet via deze naam bij de functie:
let test = function func() {
console.log('!');
};
test(); // geeft '!' weer
func(); // geeft een foutmelding
Waarom zou je de functie een naam geven als deze niet beschikbaar is? Het punt is dat deze naam niet toegankelijk is buiten de functie, maar wel binnenin deze functie.
Laten we dit testen:
let test = function func() {
console.log(func); // de functie geeft haar eigen broncode weer
};
test(); // roepen de functie aan
Laten we onze functie binnenin zichzelf aanroepen:
let test = function func() {
console.log('!'); // geven '!' weer
func(); // roepen onszelf aan
};
test();
Als je deze code uitvoert, zal er een oneindig aantal keer naar de console worden uitgevoerd.
In feite kan onze functie binnenin zichzelf
niet alleen worden aangeroepen als func, maar
ook als test:
let test = function func() {
console.log('!');
test(); // roepen onszelf aan
};
test();
Wat is dan het verschil? Het verschil is dat de naam
test slechts een variabele is. Tijdens het
uitvoeren van het script kan onze functie in
een andere variabele worden opgeslagen of als parameter worden doorgegeven
- in dat geval kan de verbinding tussen de variabele test
en de functie verbroken worden.
De naam func is daarentegen hard aan de functie
gebonden, specifiek zodat we naar
onze functie binnenin zichzelf kunnen verwijzen.
Dergebijke Function Expression met een functienaam worden genoemde functionele expressies genoemd.