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

8

我觉得我可能要疯了。

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

并且firebug输出:

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

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

正如您所看到的,当记录对象本身时,“isLoaded”为真,但记录属性时为假。

我已经尝试过再次记录对象,以防万一,结果又是true。

有人知道这里发生了什么吗?

谢谢

Rich


http://jsfiddle.net/xmvUR/... 我不知道你代码的实际位置。但我确信在 JavaScript 中没有这样的 bug。 - Boopathi Rajaa
1个回答

3
我不确定你是否遇到了这个问题,但是在某些浏览器中使用console.log()记录一个变化的值或迭代数组时可能会出现问题。我的猜测是,这可能与进程界限之间的数据传输有关,并且可能要延迟实际评估日志表达式的时间,直到正在使用或引用的对象或索引发生更改。我确实在Chrome中看到过这个问题 - 不知道Firefox怎么样。您可以通过使用字符串连接来构建最终的字符串来解决此特定问题。如果只将最终字符串传递给console.log(),其中所有内容都被完全评估,则此问题不会影响输出。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接