Tarayıcıların her zaman dize ile yukarıdan aşağıya dizeden JavaScript kodu çalıştırdığını düşündüm (bu davranışı bir komut dosyası dilinden beklersiniz).JavaScript tam olarak nasıl yorumluyor?
// mükemmel
<script>
test();
function test() { alert('test'); }
</script>
çalışır ancak bir değişken olarak işlev bildirmek eğer başarısız: Ama açıkça burada böyle değil 'Yakalanmayan ReferenceError: Test tanımlanmadı':
<script>
test();
var test = function() { alert('test'); }
</script>
Yani javascript motoru bazen kodu yukarıdan aşağıya doğru yürütmez. Sonunda ilan edilmiş olsalar bile fonksiyonları önceden yükleyebilir. Tam olarak nasıl çalışır ve neden?
Fonksiyonun() {} yalnızca kapsamın en üstüne taşınan özel bir durum olduğuna inanıyorum. Yine de yanlış olabilirim. –
Tam olarak * a [AST] (http://en.wikipedia.org/wiki/Abstract_syntax_tree) gibi bir şeye dönüştürülmeden önce ayrıştırılır. Bu nedenle, kaynakta daha aşağı çizgiler için "Sözdizimi Hataları" nu görebilirsiniz. – Matt
Buradaki en iyi cevaba bir göz atın: http://stackoverflow.com/questions/336859/javascript-var-functionname-function-vs-function-functionname – viper