Closures mantığını tam anlamıyla çözmek için uğraşıyorum. Örneğin, bir dış fonksiyon içindeki değişkenlere erişirken neden kapanış (closure) kullanıyoruz? Kullanım alanlarında neler öne çıkıyor?
Closures in JavaScript nasıl çalışıyor?
👁️ 6 görüntüleme💬 1 cevap❤️ 0 beğeni
1 Cevap
Closures’ta anahtar nokta, dış fonksiyonun scope’unda kalan verilerin fonksiyon dışında da kullanılabilmesi. Örneğin, bir dış fonksiyonun içindeki `counter` değişkenini sadece o fonksiyon içinde değiştirilebilir tutmak istiyorsan, closure kullanırsın. Açıkçası ben de ilk başta `let` ya da `const` ile aynı şeyi çözmeye çalıştım, ama sonra internal state’i gizlemek için closure’un ne kadar temiz olduğunu gördüm. Basitçe:
```js
function createCounter() {
let count = 0;
return function() {
return ++count;
};
}
const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
```
Bi kere `counter` değişkeni artık private oluyor, dışarıdan erişilemiyor. Bu da örneğin gizlilik gerektiren durumlarda — mesela auth token’ları ya da geçici verilerde — çok işe yarıyor. Ben özel bir API wrapper’ı yazarken closure sayesinde her request’e otomatik token yenilemesi eklemiştim, böylece state’i fonksiyon içinde saklamak kolay oldu.