2011-11-27 100 views
6

我想我可能會生氣。console.log()顯示相同對象屬性的相互矛盾的值

我使用console.log()來查看對象的狀態,然後在下一行上對同一對象的特定屬性執行console.log()併爲每個對象獲取不同的值。登錄時的對象本身,而是虛假的登錄時

Picture { isLoaded=true, isSelected=false, img_src="imgs/image1.jpg", more...} 

property: isLoaded, value: false 
...more properties 

,你可以看到,「isLoaded」是正確的:

我使用的代碼是:

console.log(this.pictures.Items[pic].val); 

for(var i in this.pictures.Items[pic].val) { 
    console.log("property: %s, value: %s", i, this.pictures.Items[pic].val[i]); 
} 

和螢火蟲輸出屬性。

爲了以防萬一,我試過再次記錄對象,而且它又是真的。

有誰知道這裏發生了什麼?

感謝

豐富

+0

http://jsfiddle.net/xmvUR/ ...我不知道你的代碼的實際位置。但我相信JavaScript中沒有這樣的錯誤。 –

回答

2

我不能完全肯定,如果這是發生了什麼事給你或沒有,但console.log()似乎已經在一些瀏覽器的一些問題,其中一個值做console.log()或使用在數組中更改或正在迭代的索引變量不總是正常工作。

我的猜測是它與處理邊界之間進行編組的事情有關,也可能是實際評估日誌表達式的延遲,直到實際對象或索引被使用或引用的時間發生改變。我確定在Chrome中看到過這個問題 - 不知道Firefox。

您應該可以通過使用字符串數學來構建最終字符串來解決此特定問題。如果只有最後一個字符串被傳遞到console.log(),其中一切都完全評估,那麼這個問題不會影響輸出。

相關問題