Những người khác đã giải thích undefined
. undefined
giống như một biến toàn cục có thể được xác định lại thành bất kỳ giá trị nào. Kỹ thuật này là để ngăn chặn tất cả các kiểm tra không xác định bị phá vỡ nếu ai đó viết nói, undefined = 10
ở đâu đó. Một đối số không bao giờ được thông qua được đảm bảo là thực tế undefined
bất kể giá trị của biến undefined
.
Lý do để vượt qua cửa sổ có thể được minh họa bằng ví dụ sau.
(function() {
console.log(window);
...
...
...
var window = 10;
})();
Bảng điều khiển đăng nhập cái gì? Giá trị của window
đối tượng phải không? Sai lầm! 10? Sai lầm! Nó đăng nhập undefined
. Trình thông dịch Javascript (hoặc trình biên dịch JIT) viết lại theo cách này -
(function() {
var window; //and every other var in this function
console.log(window);
...
...
...
window = 10;
})();
Tuy nhiên, nếu bạn lấy window
biến làm đối số, không có var và do đó không có gì bất ngờ.
Tôi không biết jQuery có làm việc đó không, nhưng nếu bạn định nghĩa lại window
biến cục bộ ở bất kỳ đâu trong hàm của bạn vì bất kỳ lý do gì, thì nên mượn nó từ phạm vi toàn cầu.