【发布时间】:2016-10-15 02:55:43
【问题描述】:
我正在阅读有关javascript的执行上下文和范围的主题。下面是一个简单的代码:
var scope="global";
function t(){
alert(scope); // alert :"undefined"
var scope="local" ;
alert(scope); // alert: "local"
}
t();
如果我删除 'var scope="local" ; ' ,它会变成这样:
var scope="global";
function t(){
alert(scope); // alert :"global"
}
t();
我不明白为什么在我删除函数 t() 中的 var scope="local" 后,在第二种情况下范围的值会更改为“global”。
谁能帮忙解释一下,谢谢!
【问题讨论】:
-
你明白为什么第一个例子中拳头
alert显示undefined了吗? -
@DiegoCardoso 我实际上不明白。介意发布一个示例链接吗?
-
@RobScott 这是因为吊装。函数中定义的任何变量都被提升到该函数的顶部。因此,在这种情况下,他重新定义了同一个变量,但在第一行,
scope尚未初始化。您可以查看@Tim 答案中的链接。 -
@Steven Liang 你能接受答案吗?
标签: javascript variables scope