use*_*935 3 javascript scope var function
这是一个非常令人困惑的行为我发现我无法弄清楚:
var foo = 'outside';
function logIt(){
console.log(foo);
var foo = 'inside';
}
logIt();
Run Code Online (Sandbox Code Playgroud)
这将产生未定义.这对我来说已经无法解释了.但陌生人是这样的:
var foo = 'outside';
function logIt(){
console.log(foo);
}
logIt();
Run Code Online (Sandbox Code Playgroud)
实际上会在外面屈服.
为什么会这样?
因为在执行任何代码之前处理变量声明(以及一般的声明),所以在代码中的任何地方声明变量等同于在顶部声明它.
因此,您的代码相当于:
var foo = 'outside';
function logIt(){
var foo;
console.log(foo);
foo = 'inside';
}
logIt();
Run Code Online (Sandbox Code Playgroud)
在打电话的时候console.log,foo 是 undefined.
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |