我试图理解 Javascript 中的词法作用域。在下面的示例中,我在另一个函数中编写了一个函数。当我运行它时,我希望在第一个警报中弹出“爸爸”,在第二个警报中弹出“妈妈”。但实际发生的是,它在第一个弹出窗口中显示“未定义”,在第二个弹出窗口中显示“妈妈”。
function first(){
var x = "dad";
function second(){
alert(x);
var x = "mom";
alert(x);
}
second();
}
first();
有人可以解释为什么在父函数中定义的变量“x”在子函数中不可见吗?奇怪的是,当我删除子函数中变量“x”的声明时,它工作正常。有人可以深入了解这里有效的词汇范围场景吗?