“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 Kapsam Belirleme Nasıl Çalışır?

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

let globalVariable = “some value”

Programınızdaki diğer herhangi bir komut dosyasının ona erişebileceği anlamına gelir:

// otherScript.js

console.log(globalVariable) // some value

JavaScript değişkenlerini global kapsamda bildirmek, ad alanı kirliliğine yol açabileceğinden kötü bir uygulamadır. Global ad alanı, değişkenleri, nesneleri ve işlevleri içeren Javascript’in en üst alanıdır. Bir tarayıcıda, Window nesnesine eklenir, NodeJS ise global adlı bir nesneyi kullanır .

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 , 2015 yılında JavaScript’teki JavaScript modül modelini resmileştirdi.

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 dışa aktarma anahtar sözcüğünü kullanarak dışa aktarıyorsa kullanabilirsiniz. Daha sonra import anahtar sözcüğünü kullanarak bu adı başka bir modüle aktarabilirsiniz.

İşte bir sınıfın dışa aktarımını gösteren bir örnek:

// index.js

export class Foo {

    constructor(property_1, property_2) {

        this.property_1 = property_1

        this.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

import { Foo } from ‘./index.js’

const bar = new Foo(‘foo’, ‘bar’)

console.log(bar.property_1) // foo

Dosyalar, JavaScript’te varsayılan olarak modül olarak bildirilmez.

İstemci tarafı JavaScript’te, komut dosyası etiketinde type özniteliğini modül olarak ayarlayarak bir komut dosyasını modül olarak bildirebilirsiniz :

<script type=”module” src=”index.js”></script>

NodeJS’de, package.json dosyanızdaki type özelliğini module olarak ayarlayarak bir komut dosyasını modül olarak bildirebilirsiniz :

{

   “type”: “module”

}

Blok Kapsamı

JavaScript’te bir blok, bir çift kaşlı ayraçların başladığı ve bittiği yerdir.

let ve const anahtar sözcükleri ile bir blok içinde bildirilen değişkenler , o bloğa göre belirlenir, yani bunlara onun dışında erişemezsiniz. Bu kapsam, var anahtar sözcüğü kullanılarak bildirilen değişkenler için geçerli değildir :

{ // Beginning of block

    const one = ‘1’

    let two = ‘2’

    var three = ‘3’

} // End of block

console.log(one) // throws error

console.log(three) // “3”

Yukarıdaki blokta yer alan ve const veya let olarak bildirilen değişkenlere yalnızca blok içinde erişilebilir. Ancak, bloğun dışında var anahtar sözcüğünü kullanarak bildirilen değişkene erişebilirsiniz .

İş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, var , let ve const anahtar sözcükleri ile bildirilen değişkenler için geçerlidir.

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:

function multiply() {

    let one = 1

    var two = 2

    const three = 3

    return one * two * three

}

// Variable shadowing

const three = ‘three’ // Does not throw an error

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.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir