Nosauktās funkcionālās izteiksmes JavaScript
Pieņemsim, ka mums ir šāda funkcionālā izteiksme:
let test = function() {
console.log('!');
};
test(); // izvadīs '!'
Piešķirsim mūsu funkcijai vārdu func:
let test = function func() {
console.log('!');
};
test();
Kā jūs jau zināt, pēc šī vārda nevar piekļūt funkcijai:
let test = function func() {
console.log('!');
};
test(); // izvadīs '!'
func(); // izvadīs kļūdu
Kāpēc tad dot funkcijai vārdu, ja tas nebūs pieejams? Lieta ir tāda, ka šis vārds būs nepieejams no ārpuses funkcijai, bet pieejams tajā pašā funkcijas iekšienē.
Pārbaudīsim:
let test = function func() {
console.log(func); // funkcija izvadīs savu pašas pirmavota kodu
};
test(); // izsaucam funkciju
Izsauksim mūsu funkciju tajā pašā iekšienē:
let test = function func() {
console.log('!'); // izvadām '!'
func(); // izsaucam paši sevi
};
test();
Ja palaist šo kodu, tad konsolē tiks izvadīts bezgalīgs daudzums izvadu konsolē.
Patiesībā mūsu funkcija var tikt izsaukta
pašas iekšienē ne tikai kā func, bet
arī kā test:
let test = function func() {
console.log('!');
test(); // izsaucam paši sevi
};
test();
Kāda tad ir atšķirība? Atšķirība ir tāda, ka vārds
test - ir tikai mainīgais. Procesā
skripta darbības laikā mūsu funkcija var tikt ierakstīta
citā mainīgajā vai nodota kā parametrs
- šajā gadījumā saikne starp mainīgo test
un funkciju var pazust.
Vārds func ir stingri piesaistīts funkcijai
īpaši tam, lai varētu piekļūt
mūsu funkcijai tajā pašā iekšienē.
Šādas Function Expression ar funkcijas nosaukumu tiek sauktas par nosauktajām funkcionālajām izteiksmēm.