new Function()无法访问参数?

时间:2012-06-28 20:50:19

标签: javascript

我尝试在计算器中使用new Function(),我发现它无法访问我传递给它所在函数的参数。我正在使用它:

function go(a, b, c) {
    return new Function('return a + b + c')();
}

go(4, '/', 2);

但它不起作用,因为它说a是未定义的。有没有办法解决这个问题?

3 个答案:

答案 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()不同。