通过括号表示法访问外部作用域的变量

Access the outer scope's variables via bracket notation

显然内部函数可以访问外部作用域的变量,例如

function example() {
    console.log('My name is ' + name);
}

var name = 'Dave';
example();

是否可以使用括号表示法访问该变量?例如

function example() {
    console.log('My name is ' + outerScope['name']);
}

(对于那些想知道我为什么要这样做的人,这是一种潜在的调试技术,而不是实际的生产代码)。

不,那不可能。作用域不是可从 JS 代码访问的对象,也没有属性。

不过,如果您想通过名称和字符串访问变量,则可以使用 eval。或者,您应该检查您的运行时是否有可以使用的调试 API,它通常会公开此类信息。