JS范围访问

时间:2016-02-24 00:14:30

标签: javascript closures

[更新]我得到确认,我不能这样做。

所有

我对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();

输出都是"范围内外",我想知道如何在全局范围内访问"范围"在范围内?或者我只想确认没有办法做到这一点。

由于

1 个答案:

答案 0 :(得分:2)

  

我想知道如何在scopeacess中访问“范围内的全局”?

你完全不能。您需要为本地var scope使用不同的变量名称,以便可以访问全局scope变量。当然,您也可以通过对全局变量进行别名处理,或者通过显式传递其值来解决此问题,以便可以通过scope变量以外的其他方式访问它。

在您的示例中,可能只选择名称来演示正在发生的事情(闭包在词法上不是动态范围的),在实际脚本中,您不会shadow您需要的变量(或者只是错误的) )。