我在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)
开始,为什么一个函数会抛出未定义的问题而另一个函数不会?