刚才,我看到了一些这样的代码:
if(condition){
var xx='sss';
}
//do something
if(condition){
console.info(xx);
}
Run Code Online (Sandbox Code Playgroud)
现在,我只是想知道为什么第二个if陈述有效?它如何访问xx变量,因为它是另一个if语句中定义的局部变量?
T.J*_*der 10
var在JavaScript中,作用域包含执行上下文(例如,整个函数的作用域,或整个全局作用域,如果var它在全局范围内),而不是块.JavaScript(尚未)具有块范围(ECMAScript6看起来很可能通过new let关键字添加它).
您引用的代码与此完全相同:
var xx;
if(condition){
xx='sss';
}
//do something
if(condition){
console.info(xx);
}
Run Code Online (Sandbox Code Playgroud)
这在规范的第10.5节中有所描述,它描述了引入新执行上下文时引擎的作用.(它基本上是一个两阶段的过程,首先设置所有声明,然后执行逐步代码.)
更多:可怜的误会var
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |