Fonksiyonel programlama: Kapatma konsepti nedir? (JavaScript/TypeScript)
Ne zaman kod yazsak, fonksiyonlar yazıyoruz. İşlev, herhangi bir yerden çağrılabilen yeniden kullanılabilir bir kod bloğudur.
Bir fonksiyon çağırdığımızda ona argüman olarak girdiler verebiliriz, kodu çalıştırır ve çıktı döndürür.
Kapatma konsepti nedir?
Kapatma kavramı, başka bir işlevin içindeki işlev bildirimidir. Bu kavram, iç işleve dış işlev durumlarına (değişkenleri ve bağımsız değişkenleri sever) erişme yeteneği verir.
Bir kod örneği görelim
const outerFunction = () => {
const state = 10;
const printState = () => {
console.log(state);
};
printState();
};
outerFunction(); // print : 10
Bir fonksiyonu başka bir fonksiyonun içinde bildirmek, bazı kodlar yazmamızı ve bu kodun ne yaptığını fonksiyona isim vererek beyan etmemizi sağlar. Avantajı, kodumuzun daha bildirimsel hale gelmesidir. Artık, kodun kendisini okumak yerine işlev adını okuyarak kodumuzun ne yaptığını biliyoruz.
Kapatma olmadan kod
kapatmadan bir kod görelim
const getFileSeparatorByOs = (os: 'linux' | 'windows', enableOsCheking = true) => {
if (enableOsCheking) {
if (os === 'linux') {
return '/';
}
if (os === 'windows') {
return '\\'
}
} else {
return '/'
}
};
const linuxSeparator = getFileSeparatorByOs('linux');
console.log(linuxSeparator);
const windowsSeparator = getFileSeparatorByOs('windows');
console.log(windowsSeparator);
const defaultSeparator = getFileSeparatorByOs('windows', false);
console.log(defaultSeparator);
Bu kodun anlaşılması gerçekten karmaşık değildir, ancak onu daha açıklayıcı (okunması kolay) hale getirebiliriz.
Kapanışlı kod
kapatmadan bir kod görelim
const getFileSeparatorByOs = (os: 'linux' | 'windows', enableOsCheking = true) => {
const getLinuxSeparator = () => '/';
const getWindowsSeparator = () => '\\';
const getDefaultSeparator = () => '/';
if (enableOsCheking) {
if (os === 'linux') {
return getLinuxSeparator();
}
if (os === 'windows') {
return getWindowsSeparator();
}
} else {
return getDefaultSeparator();
}
};
const linuxSeparator = getFileSeparatorByOs('linux');
console.log(linuxSeparator);
const windowsSeparator = getFileSeparatorByOs('windows');
console.log(windowsSeparator);
const defaultSeparator = getFileSeparatorByOs('windows', false);
console.log(defaultSeparator);
Çözüm
Kapatma kavramı, dış işlev durumlarına erişmesini sağlamak için bir diğerinin içinde bir işlev bildiriyor.
İşlevsel programlamadan etkileniyorsanız, işte Curryfication işleviyle ilgili makalem https://link.medium.com/JAoSkvB3Byb
Bu makale size yardımcı olduysa, lütfen bir beğeni verin. Ve temiz bir şekilde kod yazmanıza izin veren programlama kavramlarını seviyorsanız, şimdi abone olun, böylece hiçbir şeyi kaçırmazsınız.

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



































