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