Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz.

Kaldırma, başlatmadan önce değişkenlere ve işlevlere erişmenizi sağlayan bir JavaScript mekanizmasıdır. Böyle bir beyanı kaldırmak, onu etkili bir şekilde kapsamının en üstüne taşır.

Kaldırmanın JavaScript'te nasıl çalıştığı ve kodunuzda hatalardan kaçınmak için onu en iyi şekilde nasıl yöneteceğiniz hakkında her şeyi öğrenin.

Var, let ve const ile Kaldırma Değişkenleri

Kaldırma mümkündür, çünkü JavaScript kendi kapsamlarındaki tüm değişkenleri tanımlamak için kodunuzu tarayan JIT (Tam Zamanında) derleme sistemini kullanır.

JIT derleyicisi daha sonra derleme sırasında değişken bildirimlerinin tüm örneklerini kapsamlarının en üstüne çıkarır. JavaScript, değişkenlerin başlatmalarını değil, yalnızca bildirimlerini kaldırır.

Her bir anahtar kelime farklı davrandığından, kaldırıldığında değişkenlerin davranışı, onları bildirdiğiniz anahtar kelimeye bağlıdır.

instagram viewer

var

ile bildirilen başlatılmamış bir değişkene erişme var anahtar kelime dönecek Tanımsız. Örneğin:

konsol.log (foo); // Tanımsız
var foo = 2;

Yukarıdaki kod günlükleri Tanımsız çünkü çağırıyor konsol.log değişkeni başlatmadan önce.

JavaScript derleyicisi önceki kod bloğunu şu şekilde görüntüler:

var foo;
konsol.log (foo); // Tanımsız
foo = 2;

Kaldırma sırasında, değişkenler şuna uyar: JavaScript kapsam belirleme kuralları. Javascript, bir değişkeni yalnızca içinde bildirdiğiniz kapsamın en üstüne çıkarır. Belirtilen kapsamı dışında bir değişkenin değerini günlüğe kaydetmeye çalışmak, referans hatası. Örneğin, bir işlevin içinde bir değişken bildirirseniz, bu kapsamın dışında görünmez:

işlevbenim işlevim() {
konsol.log (foo); // Tanımsız
var foo = 10;
}

işlevim();
konsol.log (foo); // ReferenceError: foo tanımlı değil

Kapsamı dışındaki bir değişkene erişmeye çalışmak, referans hatası.

let ve const

Göre MDN ilgili belgeler izin vermek Ve sabit kaldırma, JavaScript ayrıca, ile bildirilen değişkenleri de kaldırır. izin vermek Ve sabit anahtar kelimeler. Ancak, ile bildirilen değişkenlerin aksine var anahtar kelime, bir ile başlatılmazlar Tanımsız değer.

Örneğin:

işlevbenim işlevim() {
konsol.log (foo); // Tanımsız
konsol.log (çubuk); // ReferenceError: Başlatmadan önce 'çubuğa' erişilemiyor
konsol.log (baz); // ReferenceError: Başlatmadan önce 'baz'a erişilemiyor

var foo = 5;
izin vermek çubuk = 10;
sabit baz = 15;
}

işlevim();

Bir değerle başlatmadan önce let ve const anahtar sözcükleriyle bildirilen değişkenlere erişemezsiniz.

Kaldırma Fonksiyonları

JavaScript kaldıraçları, değişkenlere benzer şekilde çalışır. Değişkenlerde olduğu gibi, onları nasıl bildirdiğinize bağlıdır. Örneğin, JavaScript, işlev bildirimlerini işlev ifadelerinden farklı şekilde kaldırır.

Bir işlev bildirimi, bir adla bildirilen bir işlevdir, işlev ifadesi ise adını atlayabileceğiniz bir işlevdir. Örneğin:

işlevfoo() {
// işlev bildirimi
}

sabit çubuk = () => {
// fonksiyon ifadesi
}

JavaScript, işlev bildirimlerini kaldırır, ancak işlev ifadelerini kaldırmaz. Örneğin:

foo(); // 5
çubuk(); // TypeError: bar() bir işlev değil

// Fonksiyon Bildirimi
işlevfoo() {
konsol.kayıt(5);
}

// Fonksiyon İfadesi
var çubuk = işlevifade() {
konsol.kayıt(10);
};

Bu kod çağırır foo bir işlev olarak bildirmeden ve başlatmadan önce, ancak yine de günlüğe kaydeder 5 konsola. Ancak aramaya çalışırken çubuk ile sonuçlanır Yazım Hatası.

Kaldırmayı Yönetme

Kaldırma işleminin ve yanlış yönetildiğinde meydana gelebilecek olası hataların farkında olmak, sizi uzun saatler süren hata ayıklamadan kurtarabilir. Kaldırma işlemini yönetmenin bazı yolları aşağıda verilmiştir.

Fonksiyonların İçinde Değişken Bildirme

Onlara erişecek işlevlerin içindeki değişkenleri bildirin. Birden çok işlev içinde erişebileceğiniz genel bir değişkene ihtiyacınız olabileceğinden, bunu her zaman yapamazsınız. Bu nedenle, yalnızca gerçekten ihtiyacınız varsa değişkenleri genel olarak bildirdiğinizden emin olun.

Değişkenleri let veya const ile bildirin

Her zaman l kullanmalısınet ve Chemen yerine anahtar kelimeler var değişkenleri bildirirken anahtar kelime. Bu uygulama, bir işlev içindeki yerel değişkenleri bildirirken faydalıdır. Doğru yolları bilmek JavaScript'te değişkenleri bildir kodunuzda meydana gelen kaldırmadan kaynaklanan hata olasılığını azaltır.

Değişkenleri Kapsamlarının Başında Bildirin

Diğer ifadelerden önce tüm değişkenlerinizi ilgili kapsamlarının en üstünde bildirin. Bunu yapmak, JavaScript derleyicisinin bu değişkenlere erişmek için bu değişkenleri kaldırmak zorunda kalmamasını sağlayacaktır.

Katı Modu Kullanma

Sıkı mod bir JavaScript modudur zayıf sözdizimini düzenler, kodunuzun çalışma süresini optimize eder ve derleme zamanında hatalar atarak JavaScript'in gevşek yazılmış sözdiziminin kötüye kullanılmasını yasaklar.

Örneğin, kaldırma nedeniyle "özensiz modda", başlatılmış işlevin dışındaki bir değişkene, bildirilmemiş olsa bile erişebilirsiniz:

işlevim();
konsol.log (foo); // 20

işlevbenim işlevim() {
foo = 20;
}

Yukarıdaki kod bloğunda, JavaScript otomatik olarak bildirir foo ve onu başlattığınız kapsamı göz ardı ederek küresel kapsamın en üstüne çıkarır.

Bu davranışı düzeltmek için katı modu kullanabilir ve değişkene işlev kapsamı dışından erişmeye çalışırsanız bir hata atabilirsiniz.

Sıkı mod, kaldırmayı tamamen durdurmaz. Bunun yerine, kaldırmanın en kafa karıştırıcı ve hataya açık biçimlerini önler. Sıkı mod güvenlik ağı kullanılırken bile kaldırmanın arkasındaki genel konsepti ve kuralları anlamak yine de önemlidir.

Küresel düzeyde katı moda geçmek için, betik dosyanızın en üstünde sözdizimini bildirin:

"kullanmaksıkı"; // veya 'kullanmaksıkı'

Bir işlev düzeyinde katı moda geçmek için, herhangi bir ifadeden önce işlev gövdesinin en üstünde sözdizimini bildirin:

işlevmyStrictFonksiyonum() {
"kullanmaksıkı";
}

Bir işlev düzeyinde katı mod bildirirseniz, ayar yalnızca o işlevin içindeki deyimler için geçerli olacaktır.

Küresel düzeyde katı mod bildirmek, değişkenlere kendi kapsamları dışından erişilmesini engeller:

"kullanmaksıkı";
işlevim();
konsol.log (foo); // ReferenceError: foo tanımlı değil

işlevbenim işlevim() {
foo = 20;
}

Sıkı mod açıkken, JavaScript derleyicisi kaldırılacaktır benimFonksiyonum() bildirilmemiş değişken olmadan kapsamının en üstüne.

Kaldırmayı Nelerin Etkilediğini Anlayın

Kaldırma, JavaScript'e oldukça özgüdür ve kafanızı karıştırmak için çok kafa karıştırıcı bir davranış olabilir. Değişkenleri ve işlevleri etkileyebilir, ancak gerekirse bunu önlemenin yolları vardır.

Kaldırma işlemini birkaç faktör etkileyebilir, bu nedenle kodunuzda herhangi bir değişken veya işlev kaldırma oluşumundan kaçınmak en iyisidir.