Nimetatud funktsionaalavaldised JavaScriptis
Oletame, et meil on selline funktsionaalne avaldis:
javascriptlet test = function() {
console.log('!');
};
test(); // väljastab '!'
Anname oma funktsioonile nime func:
javascriptlet test = function func() {
console.log('!');
};
test();
Nagu te juba teate, selle nime abil ei saa funktsioonile pöörduda:
javascriptlet test = function func() {
console.log('!');
};
test(); // väljastab '!'
func(); // annab vea
Miks siis funktsioonile nime anda, kui see ei ole väljaspool kättesaadav? Asi on selles, et see nimi on funktsiooni sees kättesaadav, kuigi väljaspool seda mitte.
Kontrollime:
javascriptlet test = function func() {
console.log(func); // funktsioon väljastab oma algse koodi
};
test(); // kutsume funktsiooni välja
Kutsume oma funktsiooni välja selle sees:
javascriptlet test = function func() {
console.log('!'); // väljastame '!'
func(); // kutsume ennast välja
};
test();
Kui see kood käivitada, siis kuvatakse konsooli lõpmatu arv '!' väljundeid.
Tegelikult saab meie funktsiooni kutsuda
endas mitte ainult kui func, vaid
ka kui test:
javascriptlet test = function func() {
console.log('!');
test(); // kutsume ennast välja
};
test();
Mis vahe on? Vahe on selles, et nimi
test on lihtsalt muutuja. Skripti töö
protsessis võib meie funktsioon kirjutada
teise muutuja sisse või edastada parameetrina
- sel juhul võib seos muutuja test
ja funktsiooni vahel kaduda.
Nimi func on aga funktsiooniga jäigalt seotud
spetsiaalselt selleks, et me saaksime oma funktsiooni
poole pöörduda selle sees.
Selliseid nimetatud funktsioonivaldiseid kutsutakse nimetatud funktsionaalavaldisteks.