Javascript 是否可以通过编程方式获取范围链?

Javascript 是否可以通过编程方式获取范围链?,javascript,Javascript,我需要使用变量名获取变量的值。但我也需要考虑范围的东西。例如,我的用户可以编写以下代码: var x = 20; function func1(){ var x = 30; return function(){ return x; } } var func = func1(); 现在他们递给我这个func,还有一个名为“x”的字符串,我需要从func所属的范围计算x function resolveValue(obj, name){ //uni

我需要使用变量名获取变量的值。但我也需要考虑范围的东西。例如,我的用户可以编写以下代码:

var x = 20;
function func1(){
    var x = 30;
    return function(){
        return x;
    }
}

var func = func1();
现在他们递给我这个
func
,还有一个名为
“x”
的字符串,我需要从
func
所属的范围计算
x

function resolveValue(obj, name){
    //unimplemented;
}

resolveValue(func, "x"); //return 20 in this example. 
更清楚地说,我需要实现一个函数,它接受两个参数,一个是对象,另一个是表示变量名的字符串。函数需要从第一个对象所属的范围返回由第二个参数表示的变量值

function resolveValue(obj, name){
    //unimplemented;
}

resolveValue(func, "x"); //return 20 in this example. 

我认为如果我可以得到作用域链,这是可以做到的,但是在javascript中这可能吗?

第一个对象始终只属于函数的作用域。你应该尽量避免阴影。我不认为有任何方法可以做到这一点。您无权访问当前或任何范围的环境记录。