for IE11中的循环

Dmi*_*nik 1 javascript internet-explorer

IE 11中的控制台

在此输入图像描述

Chrome中的控制台

在此输入图像描述

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

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

循环工作正常

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

the*_*dev 8

item 在IE中被定义为本机函数,并且可能是只读的,因此是您无法更改其值的原因.

在加入Edge之前,微软并不喜欢遵守标准,而是引入了标准中没有的各种功能.该item功能在Edge中不存在.

另外,你还没有宣布anotherItem,试试这个:

试试这个:

var obj = {
    id1: 'item 1',
    id2: 'item 2',
    id3: 'item 3'    
};

for (var anotherItem in obj){
    console.log(anotherItem);
}
Run Code Online (Sandbox Code Playgroud)

如果您没有使用varkeywork 声明变量,并且您没有处于严格模式,那么它将被定义为全局变量(这不是您想要的).全局变量本质上是全局对象的属性,在Web浏览器的上下文中,它是window对象.

将以下内容添加到JS文件的顶部以启用严格模式,然后您将无法首先犯这些错误,因为将抛出异常.

"use strict";
Run Code Online (Sandbox Code Playgroud)

您还可以选择为特定功能启用严格模式,如下所示:

(function() {
    "use strict";
    // code here is in strict mode
})()
Run Code Online (Sandbox Code Playgroud)