Qapamalar ve JavaScript-də Funksiyanın Yerində Çağırılması
Artıq bildiyiniz kimi, anonim funksiyanı yerində çağırmaq və iş nəticəsini hansısa dəyişənə mənimsətmək olar:
let result = function() {
return '!';
}();
console.log(result); // çap edəcək '!'
Tez-tez yerində çağırılan funksiyanı belə hallarda dairəvi mötərizələrə alırlar, baxmayaraq ki, buna ehtiyac yoxdur. Bu ona görə edilir ki, dərhal görünsün ki, funksiya yerində çağırılır:
let result = (function() {
return '!';
})();
console.log(result); // çap edəcək '!'
İndi icra edilmiş yerində çağırılan funksiyanın nəticəsi anonim funksiya olsun:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // çap edəcək '!'
Gəlin elə edək ki, qaytarılan funksiya
qapamada num dəyişənini saxlasın:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Əgər num++ əlavə etsək, onda
func funksiyası hazır sayğaca çevriləcək:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); //çap edəcək 1
func(); //çap edəcək 2
func(); //çap edəcək 3
func(); //çap edəcək 4
func(); //çap edəcək 5
Mənim koduma gizlincə baxmadan, müstəqil şəkildə eyni sayğacı həyata keçirin.
Sayğacın işini elə dəyişin ki,
o 5-ə qədər saysın, sonra isə sayma yenidən başlasın.