Adımlar: Firefox 29.0.1 (Windows 7 x64) 'deFirefox neden değişkenin değerini unutuyor? Hata ayıklama çözümü
sayfayı aç:
<!doctype html> <title>Test</title> <script> (function() { var x = 5, f = function() { setTimeout(f, 1000); }; f(); }()); </script>
Açık Geliştirici Araçları (F12). , Kesme isabet sonra
setTimeout(f, 1000);
konsolunda
x
değerlendirmek: Debugger'daki yılında, kesme noktası ayarlamak. Sonuç:
undefined
sayfayı yeniden yükleyin. Kesme noktası,
f
'un ilk çalışmasında vuruldu.x
.x
.x
. Sonuç: Yürütme işlemine devam edip kesme noktası tekrarlandığındax
değerini değerlendirin. Aynı sonucu:5
Benim varsayım: Firefox x
gerekli olmadığını f
ilk çalıştırmada fark ederse, o zaman f
"ile" x
değerini saklamaz. Böylece f
numaralı çağrılarda x
değeri undefined
'dur. İlginçtir, aynı davranışı Chrome 35 ve IE11'de görüyorum.
Soru:Neler oluyor? Firefox'u x
değerini adım 4'te doğru değere (yukarıdaki gibi) getirecek şekilde yapılandırabilir miyim?
'x' yalnızca işlev içinde var olan ve onu erişmeye çalışıyorsanız: Eğer denemek ve aynı şeyi yaparsanız
İlginç olsa da, Firefox 31 (Aurora) daha açıklayıcı hata mesajı sağlar dışında. – Meredith
Bu sorunu anlamıyorum. Ona adım attığımda doğru değerlendiriliyor. Dev araçlara yerleşik Fox 23.0.1. Bir sayfa yüklerseniz, hata ayıklayıcısını başlatırsanız ve hata ayıklamayı denediğinizde hata ayıklayıcısını doğru şekilde çalışmaz. Çalışmak için sayfayı yüklemek, hata ayıklayıcısını yüklemek, sayfayı yenilemek zorunda kaldım. –
@Meredith 'x 'işlevine, setTimeout (f, 1000); – feklee