繁体   English   中英

console.log()显示相同对象属性的矛盾值

[英]console.log() showing contradictory values for the same object property

我想我可能会发疯。

我使用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()完全评估,则此问题不会影响输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM