我遇到了一个奇怪的 Javascript 范围问题(请参阅JSFiddle):
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();
为什么 Javascript 不抛出未定义的问题someF2()
?怎么someF2()
能访问someGlobal
,又someF()
不能呢?如何确保在函数中可以访问全局变量?
评论:
在这两种情况下,函数都是从调用开始的alert(someglobal)
,为什么一个函数会抛出未定义的问题而另一个不会呢?