控制台
Chrome中的控制台
如果我将循环中的'item'更改为'anotherItem',就像这样
var obj = {
id1: 'item 1',
id2: 'item 2',
id3: 'item 3'
};
for (anotherItem in obj){
console.log(anotherItem);
}
循环正常
为什么IE 11不处理单词'item'
答案 0 :(得分:8)
item
在IE中定义为本机函数,可能是只读的,因此无法更改它的值。
在Edge之前,微软不喜欢遵守标准,并引入了标准中没有的各种功能。 Edge中没有item
函数。
另外,您尚未声明anotherItem
,请尝试:
试试这个:
var obj = {
id1: 'item 1',
id2: 'item 2',
id3: 'item 3'
};
for (var anotherItem in obj){
console.log(anotherItem);
}
如果您没有使用var
键工作声明变量,并且您没有处于严格模式,那么它将被定义为全局变量(这不是您想要的)。全局变量本质上是全局对象的属性,在Web浏览器的上下文中,它是window
对象。
将以下内容添加到JS文件的顶部以启用严格模式,然后您将无法首先犯这些错误,因为将抛出异常。
"use strict";
您还可以选择为特定功能启用严格模式,例如:
(function() {
"use strict";
// code here is in strict mode
})()
答案 1 :(得分:0)
您可以将此示例用于旧的浏览器。祝你好运。
var fruits = ["apple", "orange", "cherry"];
fruits.forEach(myFunction);
function myFunction(item, index) {
document.getElementById("demo").innerHTML += index + ":" + item + "<br>";
}