为什么这个返回2而不是1?似乎第二个“var”被静默忽略了。
function foo()
{
var local = 1;
{
var local = 2;
}
return local;
}
foo()
/*
2
*/
function foo()
{
var local = 1;
{
var local = 2;
}
return local;
}
foo()
/*
2
*/
来自MDN:
JavaScript没有块级作用域;相反,在块内声明的变量仅在包含该块的函数(或全局作用域)中为局部变量。
在JavaScript中,变量的作用域是声明它的整个函数(或全局作用域),因此你只有一个变量 local
在这里。
你的代码等效于
function foo()
{
var local;
local = 1;
{
local = 2;
}
return local;
}
foo()
let
进行词法作用域,但它目前还不是真正可用的。