[更新]我得到确认,我不能这样做。
所有
我对JS范围很新,比如我将函数定义为:
var scope = "scope inside global";
function out(){
var scope = "scope inside out";
function scopeaccess(){
console.log(scope);
}
scopeaccess();
return scopeaccess;
}
var sa = out();
sa();
输出都是"范围内外",我想知道如何在全局范围内访问"范围"在范围内?或者我只想确认没有办法做到这一点。
由于
答案 0 :(得分:2)
我想知道如何在scopeacess中访问“范围内的全局”?
你完全不能。您需要为本地var scope
使用不同的变量名称,以便可以访问全局scope
变量。当然,您也可以通过对全局变量进行别名处理,或者通过显式传递其值来解决此问题,以便可以通过scope
变量以外的其他方式访问它。
在您的示例中,可能只选择名称来演示正在发生的事情(闭包在词法上不是动态范围的),在实际脚本中,您不会shadow您需要的变量(或者只是错误的) )。