x = 1;
alert(x);
var y = function() {
alert(x);
var x = 2;
alert(x);
}
y();
Kết quả của 3 cảnh báo là: 1
, undefined
, 2
(Chrome 25)Tại sao biến toàn cầu của tôi bị che khuất trước tuyên bố địa phương?
Câu hỏi của tôi là: tại sao các cảnh báo thứ hai là undefined? Tại sao không 1? Không có biến toàn cục x?
Vì bạn đổ bóng 'x' trong chức năng của mình. Vì vậy, có một biến chức năng phạm vi 'x', mà chưa được gán một giá trị để bạn có được undefined. Đây là lý do tại sao nó luôn luôn được đề nghị để khai báo các biến của bạn ở đầu của hàm, bởi vì nó sẽ được thực hiện cho bạn anyway. Cố gắng không nhầm lẫn bản thân. – Chad