Zde*_*las 6 javascript local-variables
为什么这会返回2而不是1?似乎第二个"var"被默默忽略.
function foo()
{
var local = 1;
{
var local = 2;
}
return local;
}
foo()
/*
2
*/
Run Code Online (Sandbox Code Playgroud)
在javascript中只有功能级别范围和全局范围.您不能创建块范围,它不会添加任何特殊含义,也不会创建任何范围.
这就是你的代码结束的方式
function foo()
{
var local = 1;
local = 2;
return local;
}
foo();
Run Code Online (Sandbox Code Playgroud)
在ES6中,您可以在Let的帮助下创建块级范围.ES6尚不支持.更多关于这里
来自MDN:
JavaScript 没有块语句作用域;相反,在块内声明的变量对于该块所在的函数(或全局范围)来说是本地的。
JavaScript 中变量的作用域是声明该变量的整个函数(或全局作用域),因此这里只有一个变量local。
你的代码相当于
function foo()
{
var local;
local = 1;
{
local = 2;
}
return local;
}
foo()
Run Code Online (Sandbox Code Playgroud)
请注意,ES6(JavaScript 的新规范)确实引入了词法作用域let,但尚未真正可用。
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |