SORU
30 EKİM 2010, CUMARTESİ


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
30 EKİM 2010, CUMARTESİ


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dougownsall

    dougownsall

    7 EKİM 2007
  • pjtoohot

    pjtoohot

    15 NİSAN 2008
  • Rockstar Games

    Rockstar Gam

    17 ŞUBAT 2006