for IE11中的循环

时间:2017-06-06 12:41:12

标签: javascript internet-explorer

IE 11中

控制台

enter image description here

Chrome中的控制台

enter image description here

如果我将循环中的'item'更改为'anotherItem',就像这样

var obj = {
    id1: 'item 1',
    id2: 'item 2',
    id3: 'item 3'    
};
for (anotherItem in obj){
    console.log(anotherItem);
}

循环正常

为什么IE 11不处理单词'item'

2 个答案:

答案 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>";
}