Nimetatud funktsionaalavaldised JavaScriptis
Oletame, et meil on selline funktsionaalne avaldis:
let test = function() {
console.log('!');
};
test(); // väljastab '!'
Anname oma funktsioonile nime func:
let test = function func() {
console.log('!');
};
test();
Nagu te juba teate, selle nime abil ei saa funktsioonile pöörduda:
let 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:
let test = function func() {
console.log(func); // funktsioon väljastab oma algse koodi
};
test(); // kutsume funktsiooni välja
Kutsume oma funktsiooni välja selle sees:
let 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:
let 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.