JavaScript'te Kapanışlar ve Anında Fonksiyon Çağrısı
Zaten bildiğiniz gibi, anonim bir fonksiyonu anında çağırabilir ve çalışma sonucunu herhangi bir değişkene atayabilirsiniz:
let result = function() {
return '!';
}();
console.log(result); // '!' yazdırır
Bu durumda, anında çağrılan fonksiyon genellikle (yine de gerekli olmasa da) parantez içine alınır. Bu, fonksiyonun anında çağrıldığının hemen anlaşılması için yapılır:
let result = (function() {
return '!';
})();
console.log(result); // '!' yazdırır
Şimdi, anında çağrılan fonksiyonun sonucunun anonim bir fonksiyon olmasını sağlayalım:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // '!' yazdırır
Döndürülen fonksiyonun, num değişkenini
kapanışta saklamasını sağlayalım:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Eğer num++ eklersek, func fonksiyonu
hazır bir sayaç haline gelir:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); // 1 yazdırır
func(); // 2 yazdırır
func(); // 3 yazdırır
func(); // 4 yazdırır
func(); // 5 yazdırır
Koduma bakmadan, kendi başınıza aynı sayacı uygulayın.
Sayaçın, 5'e kadar saymasını ve
sonra yeniden başlamasını sağlayacak şekilde
değiştirin.