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

时间:2011-11-27 05:55:47

标签: javascript firebug boolean

我想我可能会生气。

我使用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。

我已经尝试过以后再次记录对象,并且它再次成为现实。

有谁知道这里发生了什么?

由于

1 个答案:

答案 0 :(得分:2)

我不完全确定这是否是您发生的事情,但console.log()似乎在某些浏览器中遇到问题,这些浏览器对某个值执行console.log()或使用正在更改或在数组中迭代的索引变量并不总能正常工作。

我的猜测是,它与在进程边界之间进行编组的事情有关,可能是对日志记录表达式的实际评估的延迟,直到使用或引用的实际对象或索引发生更改为止。我确实在Chrome中看到了这个问题 - 不了解Firefox。

您应该能够通过使用字符串数学来构建最终字符串来解决此特定问题。如果只将最终字符串传递给console.log(),其中所有内容都已完全评估,则此问题不会影响输出。