【问题标题】:Iterating thru Object properties produces different results in different browsers [duplicate]遍历对象属性会在不同的浏览器中产生不同的结果[重复]
【发布时间】:2013-06-11 17:33:42
【问题描述】:

我在 JavaScript 中创建一个非常基本的对象并循环遍历它的属性,显示属性名称:

var name = {
                'A': 'DataA',
                'B': 'DataB',
                'C': 'DataC',
                'D': 'DataD',
                'E': 'DataE'
            }

for (var propName in name) {
    document.getElementById('result').innerHTML += propName + ' '
}

在 IE 和 FireFox 中会产生预期的结果:

A B C D E 

但在 Chrome 中产生相同的代码

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

知道为什么吗?关键字 name 在 Chrome 中是否有意义?

【问题讨论】:

  • JSFiddle 由于某种原因没有显示效果,但是当我直接在浏览器中打开带有代码的 HTML 页面时 - 会发生这种情况
  • 当您将它用作全局时,Chrome 似乎并不喜欢它(window 对象上有一个 name 属性)。只需在函数中运行即可。
  • @zdyn 就是这样!显然,Chrome 中的 name[Object, Object],这就是这些属性的来源。奇怪的东西。使用私有 name 变量运行它可以工作。如果您将此作为答案发布,我会接受。
  • @zerkms 是的,您的小提琴将代码包装在一个函数中,这就是它不会中断的原因,请参阅jsfiddle.net/cqvrF/2 您必须选择 nowrap 选项...

标签: javascript google-chrome object for-loop


【解决方案1】:

当您将它用作全局变量时,Chrome 似乎不喜欢它(window 对象上还有一个 name 属性)。只需在函数中运行即可。

【讨论】:

    【解决方案2】:

    试试

    for (var propName in name) {
        document.getElementById('result').innerHTML += (propName + ' ');
    }
    

    【讨论】:

    • 你认为它会改变什么(对于工作代码)?请在删除答案之前查看developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… :-)
    • 问题是,当我调试页面时propName 确实显示了这些数字
    • 我不会删除它,因为它会有所作为
    • @Axel Amthor:请解释一下它有什么不同
    • @AxelAmthor -1 没有区别
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多