Chỉ cần ra khỏi tò mò ..Mặc nhiên toàn cầu "mục" biến - sự khác biệt giữa Internet Explorer và FireFox
Tôi có điều này JS mã:
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);
Thông báo các nhận xét var item
mà rời khỏi vòng lặp với ngầm tuyên bố item
biến.
Nếu tôi chạy mã này trên FireFox, kết quả của báo là:
0:a,1:b,2:c
Nếu tôi chạy cùng mã trong trình duyệt Internet Explorer, kết quả là:
0:c,1:c,2:c
Đây là jsfiddle: https://jsfiddle.net/fvu9gb26/
Tất nhiên, khi tôi bỏ ghi chú var item
nó hoạt động theo cùng một cách trong mọi trình duyệt.
Có ai biết tại sao sự khác biệt này xảy ra không? Cảm ơn bạn.
Cảm ơn bạn. Điều này thực sự là một sự trùng hợp mà chúng ta quên khai báo 'var item' vì chúng ta luôn khai báo biến trong dự án của mình và không bao giờ dựa vào khai báo ngầm. Và thứ hai, biến này có cùng tên với một số phương thức gốc trên 'đối tượng cửa sổ' chỉ tồn tại trong IE..wow :) –