遍历对象属性会在不同的浏览器中产生不同的结果[重复]
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 中产生不同的结果