一千萬個為什麽

搜索

console.log()顯示相同對象屬性的矛盾值

我想我可能會發瘋。

我使用console.log()來查看對象的狀態,然後在下一行上對同一對象的特定屬性執行console.log(),並為每個對象獲取不同的值。

我正在使用的代碼是:

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] );
}

和螢火蟲輸出:

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

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

如您所見,“isLoaded”在記錄對象本身時為true,在記錄屬性時為false。

為了以防萬一,我已經嘗試再次記錄該對象,它再次成為現實。

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

謝謝

豐富

最佳答案

我不完全確定這是不是你發生了什麽,但 console.log()似乎在某些瀏覽器中有一些問題,其中一個 console.log()對一個值或使用正在更改或在數組中叠代的索引變量並不總是正常工作。

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

您應該能夠通過使用字符串數學來構建最終字符串來解決此特定問題。如果只將最終字符串傳遞給 console.log(),其中所有內容都已完全評估,則此問題不會影響輸出。

轉載註明原文: console.log()顯示相同對象屬性的矛盾值