Tôi chạy vào một vấn đề phạm vi lạ với Javascript (xem JSFiddle):Javascript phạm vi biến toàn cục vấn đề
var someGlobal = 3;
function someF() {
// undefined issue
alert(someGlobal);
var someGlobal = 5;
// Displays 5
alert(someGlobal);
}
function someF2() {
// Displays 3, why?
alert(someGlobal);
}
someF();
someF2();
Tại sao không Javascript ném một vấn đề undefined trong someF2()
? Làm thế nào đến someF2()
có thể truy cập someGlobal
và someF()
không? Làm thế nào tôi có thể chắc chắn rằng một biến toàn cục có thể truy cập được trong một hàm?
Ghi chú:
Trong cả hai trường hợp, các chức năng bắt đầu bằng cách gọi alert(someglobal)
, tại sao một chức năng ném một vấn đề xác định và người kia không?
+1 cho câu trả lời hay nhất nhưng mô tả nhiều hơn rằng biến toàn cầu bị ghi đè bởi biến cục bộ trong hàm: D –
Nó không bị ghi đè, nó bị che khuất. – Quentin
bạn có thể cho tôi một chút giải thích về cả hai! tôi đã không thực hiện nghiên cứu về nó! Chỉ với chức năng đó, nó bị ghi đè hay không? –