JavaScript-de funksiýa gaýtaryan funksiýa
Bizde setir gaýtaryan şeýle bir funksiýa bar diýeliň:
function func() {
return '!';
}
let result = func();
console.log(result); // '!' çykarar
Indi setir ýerine, meňzeşlikde, anonim funksiýa gaýtaralyň:
function func() {
return function() {
return '!';
};
}
let result = func(); // result üýtgeýjisinde funksiýa bolar
console.log(result); // 'function() {return '!';}' çykarar
Görşüňiz ýaly, result üýtgeýjisi indi
funksiýadyr. Onuň işiniň netijesini konsola çykaralyň.
Bun üçin ýaýly çyzykly äýjegi ýazalyň:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // '!' çykarar
func() çagyryşy funksiýa gaýtaranymyz üçin,
biz şol gaýtarylan funksiýany derrew çakyryp bileris,
şeýle: func()() - birinji ýaýly çyzykly äýjegiler
func funksiýasynyň netijesini alyň (özü funksiýa bolýan),
ikinji ýaýly çyzykly äýjegiler bolsa
func netijesine ulanylýar.
Gözden geçirip göreliň:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // '!' çykarar
Şeýle bir func1 funksiýasyny ýasaň,
şeýle çagyrylanda: func1()(),
1 sanyny gaýtarsyn. Şuňa meňzeş
func2 funksiýasyny ýasaň,
2 sanyny gaýtarsyn.
Bu funksiýalaryň netijeleriniň jemini tapyň.