Genoemde funksionele uitdrukkings in JavaScript
Gestel ons het 'n funksionele uitdrukking soos volg:
let toets = function() {
console.log('!');
};
toets(); // sal '!' uitvoer
Kom ons gee ons funksie die naam func:
let toets = function func() {
console.log('!');
};
toets();
Soos jy reeds weet, kan jy nie by hierdie naam na die funksie verwys nie:
let toets = function func() {
console.log('!');
};
toets(); // sal '!' uitvoer
func(); // sal 'n fout gee
Hoekom dan die funksie 'n naam gee as dit nie beskikbaar sal wees nie? Die saak is dat hierdie naam nie van buite die funksie toeganklik sal wees nie, maar wel toeganklik is binne hierdie funksie.
Kom ons toets dit:
let toets = function func() {
console.log(func); // funksie sal sy eie bronkode uitvoer
};
toets(); // roep die funksie aan
Kom ons roep ons funksie binne homself aan:
let toets = function func() {
console.log('!'); // voer '!' uit
func(); // roep onsself aan
};
toets();
As jy hierdie kode uitvoer, sal 'n oneindige aantal uitsette na die konsole weergegee word.
Eintlik kan ons funksie
binne homself nie net as func aangeroep word nie,
maar ook as toets:
let toets = function func() {
console.log('!');
toets(); // roep onsself aan
};
toets();
Wat is dan die verskil? Die verskil is dat die naam
toets - bloot 'n veranderlike is. Tydens die
werk van die skrip kan ons funksie in 'n ander
veranderlike geskryf word of as 'n parameter oorgedra word
- in hierdie geval kan die skakel tussen die veranderlike toets
en die funksie verdwyn.
Die naam func is egter spesifiek aan die funksie
gekoppel sodat ons na ons funksie binne homself kan
verwijs.
Sulke Function Expression met die funksienaam word genoemde funksionele uitdrukkings genoem.