JavaScript neden değişkenleri kaldırır?
Tasarımcıların kaldırma işlemini uygulamaya karar vermelerinin mantığı neydi? Bunu yapan başka popüler diller var mı?
Lütfen belgelere ve / veya kayıtlara ilgili bağlantıları sağlayın.
JavaScript neden değişkenleri kaldırır?
Tasarımcıların kaldırma işlemini uygulamaya karar vermelerinin mantığı neydi? Bunu yapan başka popüler diller var mı?
Lütfen belgelere ve / veya kayıtlara ilgili bağlantıları sağlayın.
div
jQuery
Yanıtlar:
Stoyan Stefanov'un "JavaScript Patterns" kitabında açıkladığı gibi, kaldırma işlemi JavaScript yorumlayıcı uygulamasının sonucudur.
JS kod yorumlaması iki geçişte gerçekleştirilir. İlk geçiş sırasında yorumlayıcı, değişken ve işlev bildirimlerini işler.
İkinci geçiş, gerçek kod yürütme adımıdır. Yorumlayıcı, işlev ifadelerini ve bildirilmemiş değişkenleri işler.
Bu nedenle, bu tür davranışları tanımlamak için "kaldırma" konseptini kullanabiliriz.
"Bu nedenle, var kaldırma işlemi [bir] işlev kaldırma işleminin istenmeyen bir sonucuydu, blok kapsamı yok, [ve] JS 1995 acil bir işti."
"fonksiyon kaldırma, yukarıdan aşağıya program ayrıştırmasına izin verir, ücretsiz olarak 'izin ver', bildirmeden önce arayın; var kaldırma etiketiyle birlikte."
Değişkenleri aynı şekilde yükselten başka popüler diller bilmiyorum. Flash geliştirmede kullanılan başka bir ECMAScript uygulaması olan ActionScript bile kaldırma işlemini uygulamadı. Bu, JavaScript öğrenen diğer dilleri bilen geliştiriciler için bir kafa karışıklığı ve hayal kırıklığı kaynağı olmuştur.
GÜNCELLEME: Yorumlara göre, Python benzer değişken kaldırma davranışına sahiptir .
Bunun nedeni, javascript yorumlayıcısının kodu iki döngüde yorumlamasıdır.
1 döngüsünde tüm değişken ve fonksiyon tanımlamaları bunun yürütülüyor fonksiyon kapsamı üstüne alınır. Bu yaratmada yardımcı olur variableObjects
yönelik execution context
bile 's çalıştırılmadan önce işlevin.
2. aşamada, değer atamaları, kod ifadeleri ve işlev çağrıları beklenen şekilde satır satır gerçekleşir.
Burada biraz daha detaylı okuyabilirsiniz .
Size davranış, etrafımızda etrafında daha iyi bir görüntü verecektir let
, const
ve class
bildirimleri, bu değişken ve fonksiyonlar arasında şu da öncelik.