Nếu tôi làm điều này:Local Javascript Phạm vi vấn đề
var a = 0;
(function() {
var a = a; //want to make local a = global a
++a;
console.log("fn",a);
})();
console.log(a);
Đầu ra là:
fn NaN
0
Tại sao a
bên trong tự chức năng thực hiện trở thành NaN
?
Tôi biết nó hoạt động tốt nếu tôi làm:
(function() {
var b = a;
++b;
console.log("fn",b); // fn 1
})();
Nhưng nếu tôi đi theo con đường của phiên bản đầu tiên, nó có vấn đề NaN
.
Tại sao điều này lại xảy ra?
tôi không chắc chắn lý do tại sao nó thực hiện nhưng tôi đã thử sử dụng 'var a = window.a' và nó hoạt động phù hợp – Ibu
@Ibu hmmm là lẻ ... – Neal
vì tất cả biến toàn cầu nằm trong phạm vi cửa sổ – jagm