只是出於好奇之差..隱含全球「項」變量 - 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