只是出于好奇之差..隐含全球“项”变量 - Internet Explorer和Firefox
我有这样的JS代码:
var someExternalArray = [{id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 3, name: 'c'}];
var newArray = []
//var item;
for (var i = 0; i < someExternalArray.length; i++){
item = new Object();
item.id = someExternalArray[i].id;
item.name = someExternalArray[i].name;
newArray.push(item);
}
alert('0:' + newArray[0].name + ',1:' + newArray[1].name + ',2:' + newArray[2].name);
公告的评论var item
其叶隐式声明循环item
变量。
如果我运行火狐这段代码,警报的结果是:
0:a,1:b,2:c
如果我在Internet Explorer中运行相同的代码,结果是:
0:c,1:c,2:c
这里是jsfiddle:https://jsfiddle.net/fvu9gb26/
当然,当我取消注释它在每个浏览器中都以相同的方式工作。
有谁知道为什么会出现这种差异?谢谢。
谢谢。这真的是一个巧合,我们忘记声明'var item',因为我们总是在我们的项目中声明变量,并且决不依赖隐式声明。第二,这个变量与'window object'上的一些本地方法具有相同的名称,它只存在于IE中.wow :) – 2015-03-26 06:02:55