Javascript'te Kaldırma === Derleme?


9

Yakın zamanda yapılan bir iş görüşmesinde ilginç bir bakış açısıyla karşılaştım.

Javascript'te kaldırma, komut dosyasının en üstünde değişken bildirimlerini ve işlev bildirimini taşımakla ilgilidir. Bu aşamaya derleme diyebilir miyiz ?

Javascript yorumlayıcının ilk geçişte kaldırma yaptığı ve ikinci geçişte aslında komut dosyasını yürüttüğü giriş betiği üzerinde 2 geçişleri olduğunun farkındayım. Javascript'in yorumlanmış bir dil olduğunu bilen bu soru beni biraz şaşırttı.

Yanıtlar:


18

Hayır. Kaldırma derleme değildir.

Kaldırma, değişkenler ve işlev bildirimleri içerdikleri kapsamın üstüne taşındığında derleme sırasında neler olduğunu açıklamak için geliştiriciler tarafından oluşturulan bir kavramdır .

Derleme, Javascript kodunuz şimdi veya daha sonra yürütülmek üzere başka bir temsile (genellikle bir tür yürütülebilir kod) dönüştürüldüğünde gerçekleşir. Chrome'un V8 Javascript motorunun aslında iki derleyicisi vardır; biri hızlı ve kirli yürütülebilir kod oluşturmak için, diğeri daha sonra optimize kod oluşturmak için.

Programlama dilleri "derlenmiş" veya "yorumlanmış" diller olarak tanımlanmamıştır. Aksine, diller gerektiği gibi yorumlanır veya derlenir.


Javascript'te Daha Fazla Okuma Kaldırma
V8 Motoru Nasıl Çalışır


1
Yorumlanan diller hakkındaki wikipedia makalesi, "yorumlanan" ve "derlenen" ayrım konusunda da yararlıdır: en.wikipedia.org/wiki/Interpreted_language

Bunu doğru anlıyorsam, Kaldırma komut dosyasını makinede okunabilir koda dönüştürmez, bu yüzden derleme değildir . Haklı mıyım? :)
Rahul Desai

Cevabımın ikinci paragrafını tekrar okuyun.
Robert Harvey

1
Bu röportajcıyla bu konuyla ilgili son konuşmamda , FrontendMasters.com'daki Advanced JS kursuna referans verdi, burada Kyle Simpson derleme olduğunu açıklıyor, örneğin bunu Bash komut dosyasıyla karşılaştırırsak, # 3 hattındayken # 4 hattında ne bekleyeceğini bilemez. Ancak, JS derleyicisi durumunda, kaldırma geçişi sırasında 4 numaralı satırda ne olduğunu gördü. Sadece diğer dillerden farklı olarak ikili koda dönüştürülmez. Javascript her çalıştırıldığında derlenir.
Rahul Desai
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.