遍历对象属性会在不同的浏览器中产生不同的结果[重复]

Posted

技术标签:

【中文标题】遍历对象属性会在不同的浏览器中产生不同的结果[重复]【英文标题】: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 中是否有意义?

【问题讨论】:

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

以上是关于遍历对象属性会在不同的浏览器中产生不同的结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中转换 POSIXct 会在 3.5.0 版中产生 NA [重复]

使用相同的命令在不同的文件夹中产生不同的结果

$\lambda = 0$ 和 OLS 的 LASSO 在 R glmnet 中产生不同的结果

AES 加密在 iOS 和 Android 中产生不同的结果

java代码执行在没有断点和正常运行的调试中产生不同的结果。 ExecutorService 坏了吗?

使用切片步骤在pycharm和python控制台中产生不同的结果