"Kapsam", kodunuzun değerlere ve ifadelere başvurabileceği veya "görebileceği" mevcut yürütme bağlamını ifade eder. Kodun çeşitli bölümlerinden değişkenlere, nesnelere ve işlevlere kapsamlarına göre erişilebilir.
JavaScript'te değişkenler, nesneler ve işlevler bir genel kapsam, bir modül kapsamı, bir blok kapsamı veya bir işlev kapsamına sahip olabilir.
JavaScript'te Küresel Kapsam
Bir komut dosyasındaki bir işlevin veya bloğun dışında bildirilen herhangi bir değerin genel bir kapsamı vardır ve programınızdaki diğer herhangi bir komut dosyası buna erişebilir.
Örneğin, bir dosyada global bir değişken bildirmek:
// index.js
globalDeğişkene izin ver = "biraz değer"
Programınızdaki diğer herhangi bir komut dosyasının ona erişebileceği anlamına gelir:
// diğerScript.js
konsol.log (genelDeğişken) // bir değer
JavaScript değişkenlerini bildirme küresel kapsamda kötü bir uygulamadır çünkü ad alanı kirliliğine yol açabilir. Global ad alanı, değişkenleri, nesneleri ve işlevleri içeren Javascript'in en üst alanıdır. Bir tarayıcıda, pencere nesne, NodeJS adlı bir nesne kullanırken küresel.
Genel ad alanını kirletmek, ad çakışmasına neden olabilir. Bu, kodunuzun aynı ad alanındaki farklı şeyler için aynı değişken adını kullanmaya çalıştığı bir durumdur. Birkaç üçüncü taraf kitaplığı kullanan büyük projelerde ad çakışmalarıyla sıklıkla karşılaşılır.
Modül Kapsamı
Modül, bir projedeki diğer modüllerin kullanması için kod parçalarını içine alan ve dışa aktaran bağımsız bir dosyadır. Kod tabanınızı daha verimli bir şekilde düzenlemenizi ve korumanızı sağlar.
ES Modülleri resmileştirildi JavaScript modül kalıbı 2015 yılında JavaScript'te.
Bir modülde bildirdiğiniz değişkenler, o modülün kapsamına alınır, yani programın başka hiçbir parçası bunlara erişemez.
Modülün dışında bir modülde bildirilen bir değişkeni, yalnızca modül bu değişkeni aşağıdakileri kullanarak dışa aktarırsa kullanabilirsiniz. ihracat anahtar kelime. Daha sonra bu adı kullanarak başka bir modüle aktarabilirsiniz. içe aktarmak anahtar kelime.
Bir sınıfın dışa aktarımını gösteren bir örnek:
// index.js
ihracatsınıfahmak{
yapıcı(özellik_1, mülk_2) {
Bu.property_1 = mülk_1
Bu.property_2 = property_2
}
}
İşte bu modülü nasıl içe aktarabileceğiniz ve dışa aktardığı özelliği nasıl kullanabileceğiniz:
// someModule.js
içe aktarmak {Foo} itibaren './index.js'const bar = yeni Foo('ahmak', 'çubuk')
konsol.log (bar.property_1) // foo
Dosyalar, JavaScript'te varsayılan olarak modül olarak bildirilmez.
İstemci tarafı JavaScript'te, aşağıdakileri ayarlayarak bir komut dosyasını modül olarak bildirebilirsiniz. tip nitelik modül üzerinde senaryo etiket:
<komut dosyası türü="modül" kaynak="index.js"></script>
NodeJS'de, bir komut dosyasını modül olarak tanımlayabilirsiniz. tip mülk modül senin içinde paket.json dosya:
{
"tip": "modül"
}
Blok Kapsamı
JavaScript'te bir blok, bir çift kaşlı ayraçların başladığı ve bittiği yerdir.
İle bir blok içinde bildirilen değişkenler İzin Vermek, ve const anahtar kelimelerin kapsamı o bloğa göre belirlenir, yani bunlara onun dışında erişemezsiniz. Bu kapsam, kullanılarak bildirilen değişkenler için geçerli değildir. var anahtar kelime:
{ // Bloğun başlangıcı
bir tane = '1'
iki olsun = '2'
var üç = '3'
} // Bloğun sonukonsol.log (bir) // hata veriyor
konsol.log (üç) // "3"
Yukarıdaki blokta yer alan ve const veya let olarak bildirilen değişkenlere yalnızca blok içinde erişilebilir. Ancak, kullanarak bildirilen değişkene erişebilirsiniz. var blok dışında anahtar kelime.
İşlev Kapsamı
Bir işlevin içinde bildirilen değişkenler, genel olarak yerel değişkenler olarak adlandırılır ve işlevin kapsamına girer. Bunlara işlevin dışında erişemezsiniz. Bu kapsam, ile bildirilen değişkenler için geçerlidir. var, İzin Vermek, ve const anahtar kelimeler.
Bir fonksiyonda tanımlanan değişkenler fonksiyon için yerel olduğundan, değişken isimleri yeniden kullanılabilir. İşlev kapsamındaki değişken adlarının yeniden kullanılması, değişken gölgeleme olarak bilinir ve dış değişkenin "gölgeli" olduğu söylenir.
Örneğin:
işlevçarpmak() {
İzin Vermek bir = 1
var iki = 2
const üç = 3dönüş bir, iki, üç
}
// Değişken gölgeleme
const üç = 'üç' // Hata atmaz
Kapsam Belirleme Kurallarını Anlamak Çok Önemlidir
JavaScript'teki mevcut kapsamları kavramak, hatalardan kaçınmanızı kolaylaştırır. Belirli bir kapsamda kullanılamayan bir değişkene erişmeye çalışmak, olgun bir hata kaynağıdır.
Kapsamın anlaşılması, kodunuzu hatalara daha açık hale getirebilecek küresel ad alanı kirliliği gibi kavramları da içerir.