我有这个代码
var Variable = "hello";
function say_hello ()
{
alert(Variable);
var Variable = "bye";
}
say_hello();
alert(Variable);
现在,当我第一次阅读这段代码时,我以为它会提示“hello”两次,但我得到的结果是它第一次提示“undefined”,第二次提示“hello”。有人可以向我解释为什么吗?
最佳答案
在 JavaScript 中,函数中的所有 var
声明都被视为出现在函数体的最顶部,无论它们实际在代码中的什么位置。因此,您的函数被解释为好像是这样写的:
function say_hello() {
var Variable;
alert(Variable);
Variable = "bye";
}
请注意,它只是以这种方式解释的声明;初始化表达式发生在 var
实际上位于您的代码中的位置。因此,您的函数定义了一个名为“Variable”的局部变量,它隐藏了更全局的变量。 alert()
运行时,变量尚未初始化。
关于javascript - 需要解释 javascript 中的范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25127491/