var scope = 'global'
function checkScope() {
var scope = 'local';
function f() {
return scope;
}
return f;
}
checkScope()();
var scope = 'global'
function checkScope() {
var scope = 'local';
function f() {
return scope;
}
return f;
}
checkScope()();
简单来说就是
function checkScope() {
var scope = 'local';
function f() {
return scope;
}
return f;
}
checkScope()();
这段代码和上面的var scope = 'global';
没有一点关系~
因为函数体内重新定义了scope变量的话,不会再去使用外层变量。
你用了var来声明变量,那么就可以在任何地方对该值进行重新赋值。
如果你获取值的地方是在重新赋值后,那会返回重新赋值的结果。
如果你用let或者const声明变量,就会有不同的效果。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
JavaScript 采用的是词法作用域,函数的作用域基于函数创建的位置。