Bazen geri yükleme için JavaScript'i okuyordum.JavaScript kaldırma ve gerçeği anlama ve gerçeği
JavaScript Scoping and Hoisting by Ben Cherry
Two words about “hoisting” by Dmitry Soshnikov
ve daha JavaScript tip zorlama, gerçeği & yanlış testi hakkında bazı: Truth, Equality and JavaScript ve diğer bazı kaynak
Ve bazı uygularken karşılaştıkları ve bazı önemli kavram eksik m bulundu Kaldırma ve değişken hakkında 'doğruluk & falsi.
1 'ise' yinelenen değişken beyanı ile gerçek deney
var foo = 1;
function bar() {
if (!foo) {
alert('inside if');
var foo = 10;
}
}
bar();
o/s: inside if
Kuşku: 'foo' değerini, '1' if(!foo)
false
olarak değerlendirilirse gerekir ve Bu blok yürütülmemelidir (yukarıdaki kaynaklardan alıntı: kaldırma, yalnızca var
& function
bildirimini etkiler, ancak yürütmeyi etkilemez). Ama bu uyarı neden gösteriliyor?
2: Doğrudan (pasajı 3. no-hile aşağıdaki kod gösterilmektedir): false
kullanırsanız Bu durum böyle değil yinelenen değişken bildiriminde
var foo = 1;
function bar() {
if (!foo) {
alert('inside if');
}
}
bar();
o/p olmadan 'eğer' gerçeği testi : çıkış yok; denetim bloğu 'eğer' girmedi demektir
Bu bir beklemek ne
3: yinelenen değişken bildiriminde
var foo = 1;
function bar() {
if (false) {
alert('inside if');
var foo = 10;
}
}
bar();
o/p 'eğer' kullanarak 'yanlış': hiçbir çıkış; 'if' bloğu girilmiyor kontrol edilir
Birisi lütfen açıklığa kavuşabilir. Teşekkürler
Benim hatam. İşe hiç aldırmadım. Sadece tip baskısı ve kaldırma üzerinde yoğunlaşıyorum (kafamın içinde dönüyorlar). Yinelenen beyan bir fonksiyonun içinde değilse, o zaman 'foo' ikinci deklarasyondan sonra bile bir önceki değere (1) sahip olacaktır. Tüm bu düşünce beni kullanılan işlevi kaçırmamı sağladı. Gözümüzü açtığın için teşekkürler :) – manikanta
Neden üç numara çalışmıyor? Eğer bir değişken tanımlanmamış ise, yanlış mıdır? – bill