【问题标题】:is there a way to access a non-global shadowed variable in javascript有没有办法在 javascript 中访问非全局阴影变量
【发布时间】:2017-12-10 00:27:35
【问题描述】:

我目前正在学习 javascript 作用域,只是想知道是否可以在 javascript 中访问非全局阴影变量?即在下面的例子中,变量aaFunc函数中等于10

var a = 1;
function aFunc(){
    var a = 10;
    function innerFunc(){
        var a = 100;
        console.log("innerFunc a = " + a);
        console.log("is it possible to access outer function's a variable?");
        console.log("global a = " + window.a);
    }
    innerFunc();
}
aFunc();

ps - 我知道用相同的名称命名你的变量是非常糟糕的做法,但我想我是出于好奇而问这个问题

【问题讨论】:

    标签: javascript variables scope global


    【解决方案1】:

    不,你至少不能用 Javascript 来做到这一点。您无法访问它,因为您故意隐藏了它(接受它作为功能;))。 Javascript 没有在词法范围内访问变量的机制(上一步)。

    【讨论】:

    • 嗨,Suresh,感谢您的帮助!我只是想知道,你知道为什么 javascript 不提供这个功能吗?换句话说,这种设计的原因是什么? (我有java背景,在java中我们可以访问多个级别的阴影变量)。
    • @CaptainAmerica 因为这就是 JS 的工作方式,The word "lexical" refers to the fact that lexical scoping uses the location where a variable is declared within the source code to determine where that variable is available. 因为你已经遮蔽了它,所以它将具有最新的值 init。
    • @CaptainAmerica BTW,Java 没有嵌套函数。你的意思是内部类?还是匿名内部类?
    • 哦,是的,我的意思是内部类。对不起,我没有说清楚
    • @CaptainAmerica 是的,但我们必须明白我们不应该比较两者的事实。每个都有其独特的功能风格和规则集。
    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 2017-09-01
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 2019-03-29
    • 2014-01-17
    相关资源
    最近更新 更多