我尝试在计算器中使用new Function()
,我发现它无法访问我传递给它所在函数的参数。我正在使用它:
function go(a, b, c) {
return new Function('return a + b + c')();
}
go(4, '/', 2);
但它不起作用,因为它说a是未定义的。有没有办法解决这个问题?
答案 0 :(得分:6)
你可能想要:
function go(a, b, c) {
return new Function('return ' + a + b + c + ';')();
}
go(4, '/', 2);
但这不是正确的方法。为您支持的每项行动制定独特的功能。
答案 1 :(得分:0)
var add = function (a, b, c) {
return a + b + c;
};
然后调用:
var sum = add(3, 4, 5); // sum is 12
答案 2 :(得分:0)
我相信@Truth在评估你想要达到的目标时是正确的。但是,我很好奇为什么a
未定义。
事实证明,规范规定当Function
用作构造函数时,评估函数体的范围是全局环境:
Section 15.3.2.1
这与使用当前范围的eval()
不同。