Javascript 对于IE11中的in-loop
IE 11中的控制台 镀铬控制台 如果我将循环中的“item”改为“anotherItem”,如下所示Javascript 对于IE11中的in-loop,javascript,internet-explorer,Javascript,Internet Explorer,IE 11中的控制台 镀铬控制台 如果我将循环中的“item”改为“anotherItem”,如下所示 var obj = { id1: 'item 1', id2: 'item 2', id3: 'item 3' }; for (anotherItem in obj){ console.log(anotherItem); } 这个循环运转良好 为什么IE 11不处理单词“item”item在IE中被定义为本机函数,并且可能是只读的,因此您无法更改其
var obj = {
id1: 'item 1',
id2: 'item 2',
id3: 'item 3'
};
for (anotherItem in obj){
console.log(anotherItem);
}
这个循环运转良好
为什么IE 11不处理单词“item”
item
在IE中被定义为本机函数,并且可能是只读的,因此您无法更改其值
在Edge之前,微软不喜欢遵守标准,并引入了标准中没有的各种功能。Edge中不存在项
功能
另外,您还没有声明另一个项目,请尝试以下操作:
试试这个:
var obj = {
id1: 'item 1',
id2: 'item 2',
id3: 'item 3'
};
for (var anotherItem in obj){
console.log(anotherItem);
}
如果您没有使用var
keywork声明变量,并且您没有处于严格模式,那么它将被定义为全局变量(这不是您想要的)。全局变量本质上是全局对象的属性,在web浏览器的上下文中,它就是窗口
对象
将以下内容添加到JS文件的顶部以启用严格模式,那么您将无法首先犯这些错误,因为将引发异常
"use strict";
您还可以选择为特定功能启用严格模式,如下所示:
(function() {
"use strict";
// code here is in strict mode
})()
您可以将此示例用于旧浏览器。祝你好运
var fruits = ["apple", "orange", "cherry"];
fruits.forEach(myFunction);
function myFunction(item, index) {
document.getElementById("demo").innerHTML += index + ":" + item + "<br>";
}
var水果=[“苹果”、“橘子”、“樱桃”];
果实。forEach(myFunction);
函数myFunction(项目、索引){
document.getElementById(“demo”).innerHTML+=index+“:“+item+”
”;
}
也许我没有完全正确地提出这个问题,但我意识到它是本机的,但我不理解他们为什么这样做,以及它的答案Microsoft在Edge之前在遵循web标准方面非常糟糕。这就是其他浏览器没有的随机函数的原因。您应该在问题中编写代码,而不是像您在问题中附加的图像那样。for(var item in obj){console.log(item);}
应该像expectedOP询问的那样,通过对象属性而不是数组元素进行迭代。