JavaScript'te kapatma
Kapatma nedir ve gerçekten ne zaman kullanabiliriz?
Kapatmayı anlamak için, JavaScript'teki 2 basit kavramı bilmemiz gerekir: iç içe işlevler ve işlev döndürme.
İç İçe İşlevler
JavaScript'te iç içe geçmiş işlevlere sahip olabiliriz. İç işlev, dış işlevin değişkenlerine ve parametrelerine erişebilir.
Aşağıdaki örneği kontrol edelim:
function greetPerson(name) {
const message = 'Hello';
function displayMessage() {
console.log(`${message} ${name}!`);
}
displayMessage();
}
greetPerson('Alex'); // Hello Alex!
Bir İşlevi Döndürmek
Bir iç fonksiyonu dış fonksiyonun içinde bildirmenin ve çağırmanın yanı sıra, iç fonksiyonu dışarıdan çağrılabilecek şekilde geri döndürebiliriz.
Bunun bir örneğini görelim:
function greetPerson(name) {
const message = 'Hello';
function displayMessage() {
console.log(`${message} ${name}!`);
}
return displayMessage;
}
const displayMessageFunction = greetPerson('Alex');
console.log(typeof(displayMessageFunction)); // function
displayMessageFunction(); // Hello Alex!
kapatma
Bu 2 kavramı anladıktan sonra, kapatmanın "tanımı" oldukça basittir.
Kapatma, bir iç işlevin, dış işlev geri döndükten sonra bile dış işlevinin değişkenlerine ve parametrelerine erişebileceği anlamına gelir.
Kapatmanın tam olarak nasıl kullanılabileceğini görebileceğimiz başka bir örneğe bakalım:
function counterFunction() {
let counter = 0;
function increaseCounter() {
return counter += 1;
}
return increaseCounter;
}
// counter reffers to the increaseCounter returned by the counterFunction
const counter = counterFunction();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3
console.log(counter()); // 4
İç işlev, dış değişkenin ayrı bir kopyasını tutmaz, ancak dış değişkene başvurur. counterBaşka bir deyişle, inner işlevini kullanarak değiştirirseniz değeri de değişecektir.
Dış işlev counterFunctionayrıca iç işleve bir referans döndürür increaseCounter, bu nedenle onu çağırdığımızda değişkenin gerçek değeri counterdeğişecektir. counterBu şekilde, değişkenin her aramadan sonra yeni bir artan değere sahip olduğunu görebiliriz counter().
Kapatma ne zaman kullanılır?
JavaScript'te kapsülleme elde etmek için kapatmayı kullanabiliriz. Bu, detay uygulamasını gizleyerek gerçekleştirilebilir. Bu şekilde private değişkenler ve fonksiyonlar oluşturabiliriz.
Yalnızca işlevleri ve nesneleri kullanarak bazı verileri kapsüllemek istediğimiz aşağıdaki örneği inceleyelim:
const counter = (function () {
let privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
function increaseCounter() {
changeBy(1);
}
function decreaseCounter() {
changeBy(-1);
}
function decreaseCounter() {
return privateCounter;
}
return { increaseCounter, decreaseCounter, getCounterValue };
})();
console.log(counter.getCounterValue()); // 0
counter.increaseCounter();
counter.increaseCounter();
console.log(counter.getCounterValue()); // 2
counter.decreaseCounter();
console.log(counter.getCounterValue()); // 1
Sayacın değerini dışarıdan ancak increaseCounterve çağırarak kontrol edebiliriz ve getter gibi davranan fonksiyonu decreaseCounterçağırarak değeri alabiliriz .getCounterValue
Bu şekilde, belirleyicileri simüle edebiliyor publicve privatebelirticilere erişebiliyor ve kapsülleme elde edebiliyoruz.
Bu, yazılım geliştirmede çok güçlü bir kavramdır çünkü değişkenlerde ve özel kalması gereken işlevlerde istenmeyen değişiklikleri önler.
Bu kadar!
JavaScript'te Kapatma hakkındaki bu makaleyi okumaya zaman ayırdığınız için teşekkür ederiz. Umarım bu önemli kavramı ve onun kapsüllemeye ulaşmak ve özel değişkenler ve işlevler oluşturmak için nasıl kullanılabileceğini daha iyi anlamanıza yardımcı olmuştur!

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































