JavaScript Kaldırma: Bilmeniz Gerekenler

Jan 08 2023
Herhangi bir süredir JavaScript ile çalışıyorsanız, muhtemelen "kaldırma" terimini duymuşsunuzdur. Aslında, görüşmeciler için, adayın JavaScript'i anlama düzeyini gösterdiği için sormaktan hoşlandıkları kavramlardan biridir.
Unsplash'ta Ries Bosch'un fotoğrafı

Herhangi bir süredir JavaScript ile çalışıyorsanız, muhtemelen "kaldırma" terimini duymuşsunuzdur. Aslında, görüşmeciler için, adayın JavaScript'i anlama düzeyini gösterdiği için sormaktan hoşlandıkları kavramlardan biridir. Ancak, kaldırma tam olarak ne anlama gelir ve kodunuzu nasıl etkiler? Bu yazıda, size bu konuda bilmeniz gerekenleri ve bunun kodunuz üzerindeki etkilerini anlatacağım.

Teknik kullanımına geçmeden önce bu terimin dilsel anlamına bakalım. Kaldırma, basitçe, genellikle halatlar veya makaralar kullanılarak bir şeyi kaldırma veya çekme eylemine atıfta bulunmak için kullanılır. “Sırt çantasını omzuna almış”, “bayrak çekmiş”, “yük gemiye çekilmiş” gibi ifadeler duyacaksınız . Kaldırma için kullanılan diğer kelimeler arasında kaldırma veya yukarı yürüyüş yer alır.

JavaScript ile ilgili olarak, "kaldırma", yorumlayıcının değişkenler veya işlevler için bildirimleri yürütmeden önce kapsayıcı kapsamlarının en üstüne otomatik olarak taşıdığı davranışı ifade eder. Bu, kodunuzda bir değişken veya işlev bildirilmeden önce onu yine de kullanabileceğiniz anlamına gelir.

Örneğin, aşağıdaki kodu göz önünde bulundurun:

var x = 10 satırında iki eylem vardır:

  1. Değişken bildirimi "var".
  2. Değişken ataması “=”.

İlginç bir şekilde, kaldırmanın yalnızca bildirimleri etkilediği, atamaları veya başlatmaları etkilemediği belirtilmelidir. Yukarıdaki örnekte, 10'a atama henüz gerçekleşmediğinden, konsola günlüğe kaydedildiğinde x'in değeri tanımsızdır.

Başlatmadan önce x değişkeninin günlüğe kaydedilmesi

Bunu daha iyi anlamak için bu davranışın fonksiyonlar tarafından nasıl sergilendiğine bir göz atalım.

Yukarıdaki örnekte, işlev bildirilmeden önce çağrıldığında bile kodun düzgün çalıştığını ve oturum açıldığında bize doğru ifadeyi verdiğini gözlemlersiniz. İşlev ister çağrıdan önce bildirilsin ister tersi, davranış aynı kalır. JavaScript yorumlayıcısı, işlev bildirimini aldı ve yürütmeden önce kapsamın en üstüne yerleştirdi. Sanki kod şöyle görünüyordu:

Öte yandan, anonim bir işlevle veya bir değişkene atanan işlevle kaldırmanın nasıl çalıştığını düşünelim. Bunun bir örneği aşağıdaki örnekte gösterilmiştir:

Bir değişkene fonksiyon atamak

Gördüğünüz gibi yukarıdaki kod bir hata üretti. Kaldırma, atamayı desteklemez, bu durumun neden böyle olduğuna dair daha önce bahsedilen açıklamadır. "Hemen çağrılan işlev ifadeleri" olarak bilinen bir ifade, anonim bir işlevi (kısaca IIFE) yürütmek için yenilikçi bir yaklaşımdır.

JavaScript değişkenlerinde barındırma davranışı için eşit derecede önemli olan "let" ve "const" anahtar kelimeleri de "var" gibi değişken bildirimi için kullanılır. "var" karşılıklarının aksine, "let" veya "const" ile bildirilen bir değişkenin değeri kaldırılmaz. Bildirilmeden önce herhangi birinin değerine erişmeye çalışırsanız, aşağıdaki resimlerde gösterildiği gibi bir ReferenceError istisnası alırsınız.

Kaldırma "izin ver" ile nasıl davranır?
Kaldırma "const" ile nasıl davranır?

Kaldırmayı kullanırken, birçok geliştiricinin yaptığı yaygın bir hata, bir değişkenin değerinin her zaman tanımsız olarak başlatıldığını varsaymaktır. Ancak bu, yalnızca bildirimlerinde "var" anahtar kelimesi bulunan değişkenler için doğrudur. Atama gerçekleşmeden önce "let" veya "const" ile tanımlanmış bir değişkene erişme girişimi bir ReferenceError ile sonuçlanacaktır. Modern kodlama en iyi uygulamaları, değişkenlerinizde istenmeyen veya kazara yapılan değişikliklere karşı daha iyi koruma sağladıkları için "let" ve "const" yerine "var" kullanımından kaçınılmasını şiddetle tavsiye eder.

Sonuç olarak kaldırma, JavaScript'te kodunuz üzerinde büyük etkisi olabilecek önemli bir kavramdır. Herhangi bir belirsizliği veya getirdiği beklenmedik davranışı önlemek için programlarınızı yazarken ve hatalarını ayıklarken bunu aklınızda bulundurduğunuzdan emin olun. Tüm değişkenlerinizi kapsamınızın en üstünde bildirmek genellikle iyi bir uygulamadır. Bu sadece kodunuzun anlaşılmasını kolaylaştırmakla kalmayacak, aynı zamanda bakımını da kolaylaştıracaktır.