Chrome'in JavaScript tembel değerlendirme diziler hakkında konsolu?
Kod ile başlayalım:
var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);
Basit, değil mi? Buna karşılık olarak, Firebug diyor ki:
["hi"]
["bye"]
Harika, ama Krom konsol diyor: JavaScript
["bye"]
["bye"]
Yanlış bir şey mi yaptım veya Chrome JavaScript benim dizisi değerlendirilmesi konusunda son derece tembel olduğum konsol.
CEVAP
Yorum, tec için teşekkürler. Bu sorunu açıklayan mevcut doğrulanmamış Y bir hata bulabildim: https://bugs.webkit.org/show_bug.cgi?id=35801
Bazı tartışmalar olduğunu ve nasıl tamir edilebilir olup olmadığını sadece ilgili görünüyor. Bana kötü bir davranış gibi görünüyor. Bu özellikle rahatsız edici çünkü, Krom en azından oluştuğunda kodun bulunduğu komut yürütülür hemen önce sayfa dolu), hatta ne zaman konsolu açın, her sayfası yenilendi. Merkezi arıyorum.konsol henüz aktif değil, yalnızca nesnenin sıraya alınan başvuru sonuçları, konsol içerir, çıkış değil günlük. Bu nedenle, dizinin (ya da herhangi bir nesne), konsol hazır bu kadar değerlendirilmeyecektir. Gerçekten tembel değerlendirme davasıdır.
Ancak, kodunuzu bunu önlemek için basit bir yolu var:
var s = ["hi"];
console.log(s.toString());
s[0] = "bye";
console.log(s.toString());
Olabilirdi çağırarak, hazır olduğunda okuyacak konsolu olan aşağıdaki ifadeleri tarafından değişmiş olacaktır bellekte bir temsilini oluşturun. Konsol çıkış doğrudan nesne geçerken biraz farklıdır, ama kabul edilebilir görünüyor:
hi
bye
's klavye konsolu Javascript Goog...
Nasıl Google Chrome JavaScript kalıcı ...
safari ve chrome javascript konsolu ço...
google chrome uzantı :: konsolu.() gün...
İnsan okunabilir chrome Geliştirici Ar...