JavaScript'te Scope (Kapsam)
JavaScript'te scope (kapsam), bir değişkenin erişilebilir olduğu alanı belirtir. Bu scope kavramı, programcının değişkenlerin hangi kod bloklarında kullanılabileceğini kontrol etmesine yardımcı olur. JavaScript'te scope kavramı üç farklı tipte karşımıza çıkar: Function Scope, Block Scope ve Lexical Scope.
Function Scope
Function Scope, bir değişkenin tanımlandığı fonksiyon içinde geçerli olduğu scope türüdür. Fonksiyon içinde tanımlanan bir değişken, fonksiyon dışındaki kod bloklarında erişilemez olacaktır.
function fonksiyonScope() {
let isim = 'Ahmet';
console.log(isim); // Ahmet
}
// console.log(isim); // Hata! 'isim' tanımlı değil
Block Scope
Block Scope, bir değişkenin tanımlandığı blok içinde geçerli olduğu scope türüdür. Blok, genellikle if
, for
, while
gibi yapılar ile oluşturulur. ES6 ile birlikte let
ve const
kullanılarak tanımlanan değişkenler block scope'a tabidir.
if (true) {
let yas = 30;
console.log(yas); // 30
}
// console.log(yas); // Hata! 'yas' tanımlı değil
Lexical Scope
Lexical Scope (Statik Kapsam), bir değişkenin fonksiyonun tanımlandığı yere göre kapsamının belirlendiği scope türüdür. Yani bir fonksiyon kendi içinde tanımlanmış olmayan bir değişkene dış kapsamından erişebilir.
let isim = 'Ayşe';
function ismiYazdir() {
console.log(isim); // Ayşe
}
ismiYazdir();
Özet
JavaScript'te scope kavramı, değişkenlerin erişilebilirliğini kontrol etmek için önemlidir. Function Scope, Block Scope ve Lexical Scope, değişkenlerin nerede tanımlı olduklarını ve nerede erişilebileceklerini belirleyen farklı kapsam türleridir. Bu kavramları doğru bir şekilde anlamak, programlama hatalarını azaltmaya ve kodun anlaşılabilirliğini artırmaya yardımcı olacaktır.