JavascriptJavascript

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

JavaScript'te Kaldırmanın Nasıl Çalıştığını Anlama

JavaScript’te kaldırmanın nasıl çalıştığı ve kodunuzdaki hataları önlemek için en iyi şekilde nasıl yönetileceği hakkında her şeyi öğrenin.

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

Kaldırma mümkündür çünkü JavaScript, ilgili 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 tüm değişken bildirim örneklerini derleme üzerine kapsamlarının en üstüne çıkarır. JavaScript, başlatmalarını değil, yalnızca değişkenlerin bildirimlerini kaldırır.

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

var

var anahtar sözcüğüyle bildirilen başlatılmamış bir değişkene erişmek, undefined değerini döndürür . Örneğin:

console.log(foo);  // undefined

var foo = 2;

Değişkeni başlatmadan önce console.log’u çağırdığı için yukarıdaki kod tanımsız olarak günlüğe kaydedilir.

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

var foo;

console.log(foo); // undefined

foo = 2;

Kaldırma sırasında değişkenler JavaScript kapsam belirleme kurallarına uyar . Javascript, bir değişkeni yalnızca içinde bildirdiğiniz kapsamın en üstüne çıkaracaktır. Bir değişkenin değerini, belirtilen kapsamı dışında günlüğe kaydetmeye çalışmak, ReferenceError ile sonuçlanacaktır . Örneğin, bir işlevin içinde bir değişken bildirirseniz, o kapsamın dışında görünmez:

function myFunction() {

    console.log(foo); // undefined

    var foo = 10;

}

myFunction();

console.log(foo); // ReferenceError: foo is not defined

Kapsamı dışındaki bir değişkene erişmeye çalışmak ReferenceError ile sonuçlanacaktır .

let ve const

let ve const kaldırma ile ilgili MDN belgelerine göre , JavaScript ayrıca let ve const anahtar sözcükleri ile bildirilen değişkenleri de kaldırır. Ancak, var anahtar sözcüğüyle bildirilen değişkenlerin aksine , bunlar tanımsız bir değerle başlatılmazlar.

Örneğin:

function myFunction() {

    console.log(foo); // undefined

    console.log(bar); // ReferenceError: Cannot access ‘bar’ before initialization

    console.log(baz); // ReferenceError: Cannot access ‘baz’ before initialization

    var foo = 5;

    let bar = 10;

    const baz = 15;

}

myFunction();

let ve const anahtar sözcükleri ile tanımlanan değişkenlere, bunları bir değerle başlatmadan erişemezsiniz.

Kaldırma Fonksiyonları

JavaScript asansörleri, 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ı olarak kaldırır.

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

function foo() {

    // function declaration

}

const bar = () => {

    // function expression

}

JavaScript, işlev bildirimlerini yükseltir, ancak işlev ifadelerini değil. Örneğin:

foo(); // 5

bar(); // TypeError: bar() is not a function

// Function Declaration

function foo() {

    console.log(5);

}

// Function Expression

var bar = function expression() {

    console.log(10);

};

Bu kod , bir işlev olarak bildirmeden ve başlatmadan önce foo’yu çağırır, ancak yine de konsola 5 günlüğe kaydeder. Ancak, bar aramayı denemek TypeError ile sonuçlanır .

Kaldırma Yönetimi

Kaldırma işleminin ve yanlış yönetilirse oluşabilecek olası hataların farkında olmak sizi uzun saatler süren hata ayıklama işlemlerinden kurtarabilir. İşte kaldırmayı yönetmenin bazı yolları.

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

Değişkenleri, onlara erişecek işlevlerin içinde bildirin. Bunu her zaman yapamazsınız, çünkü birden çok fonksiyon içinde erişebileceğiniz global bir değişkene ihtiyacınız olabilir. Bu nedenle, yalnızca gerçekten ihtiyacınız varsa değişkenleri global olarak bildirdiğinizden emin olun.

Değişkenleri let veya const ile bildirin

Değişkenleri bildirirken her zaman var anahtar sözcüğü yerine l et ve c onst anahtar sözcüklerini kullanmalısınız. Bu uygulama, bir fonksiyon içindeki yerel değişkenleri bildirirken faydalıdır. JavaScript’te değişkenleri bildirmenin doğru yollarını bilmek, kodunuzda kaldırma işleminin neden olduğu hataların olasılığını azaltır.

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

Tüm değişkenlerinizi, diğer ifadelerden önce ilgili kapsamlarının en üstünde bildirin. Bunu yapmak, JavaScript derleyicisinin bunlara erişmek için bu değişkenleri kaldırmasına gerek kalmamasını sağlayacaktır.

Sıkı Modu Kullanma

Katı mod, zayıf sözdizimini düzenleyen, kodunuzun çalışma süresini optimize eden ve derleme zamanında hatalar atarak JavaScript’in gevşek yazılmış sözdiziminin kötüye kullanılmasını yasaklayan bir JavaScript modudur.

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

myFunction();

console.log(foo); // 20

function myFunction() {

    foo = 20;

}

Yukarıdaki kod bloğunda, JavaScript otomatik olarak foo bildirir ve başlattığınız kapsamı yok sayarak onu global kapsamın en üstüne çıkarır.

Bu davranışı düzeltmek için katı modu kullanabilir ve değişkene işlev kapsamı dışında erişmeyi denerseniz bir hata verebilirsiniz.

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

Global düzeyde katı modu seçmek için, komut dosyanızın en üstünde sözdizimini bildirin:

“use strict”; // or ‘use strict’

Bir işlev düzeyinde katı modu seçmek için, herhangi bir ifadeden önce bir işlev gövdesinin üst kısmındaki sözdizimini bildirin:

function myStrictFunction() {

    “use strict”;

}

Bir işlev düzeyinde katı mod bildirirseniz, ayar yalnızca o işlevin içindeki ifadelere uygulanır.

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

“use strict”;

myFunction();

console.log(foo); // ReferenceError: foo is not defined

function myFunction() {

    foo = 20;

}

Kesin mod açıkken, JavaScript derleyicisi myFunction() öğesini bildirilmemiş değişken olmadan kapsamının en üstüne çıkaracaktır.

Kaldırmayı Nelerin Etkilediğini Anlayın

Kaldırma, JavaScript için oldukça benzersizdir ve kafanızı sarmak 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 olayından kaçınmak en iyisidir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir