【问题标题】:console.log() showing contradictory values for the same object propertyconsole.log() 显示同一对象属性的矛盾值
【发布时间】:2011-11-27 05:55:47
【问题描述】:

我想我可能要疯了。

我使用 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”在记录对象本身时为真,但在记录属性时为假。

为了以防万一,我已经尝试再次记录该对象,结果又是这样。

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

谢谢

丰富

【问题讨论】:

  • jsfiddle.net/xmvUR ...我不知道您的代码的实际位置。但我确信 JavaScript 中没有这样的错误..

标签: javascript firebug boolean


【解决方案1】:

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

我的猜测是,这与在进程边界之间编组的事情有关,并且可能会延迟日志表达式的实际评估,直到实际使用或引用的对象或索引发生变化。我肯定在 Chrome 中看到过这个问题 - 不知道 Firefox。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2013-10-31
    • 2013-05-10
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    相关资源
    最近更新 更多