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