我想知道如何使用来自不同本地范围的数据调用eval()。
类似的东西:
function doSomething() {
var y = 1;
print_and_eval('y+1');
}
function print_and_eval(data) {
print(data);
eval(data);
}
修改 - 在我的情况下使用eval()是安全的。请不要将此作为解决方案。 - 主要问题是,我在doSomething()中有局部变量,它们没有在print_and_eval()中定义。然后评估会导致'ReferenceError:y is not defined'错误。
js> print_and_eval('var a = {x:1}')
var a = {x:1}
js> print_and_eval('print(a.x)')
print(a.x)
typein:3012: TypeError: a is null
我想在这种情况下收到输出'1'。
答案 0 :(得分:1)
同意“不要使用eval”的其他评论。
话虽如此,另一种替代方案是将其传递给另一个函数:
function doSomething() {
var y = 1;
print_and_eval('y+1', y);
}
function print_and_eval(data, y) {
print(data);
eval(data);
}
这显然需要您事先了解变量名称。