使用JavaScript在默认情况下动态创建函数

时间:2015-07-15 11:40:40

标签: javascript ecmascript-6 default-parameters

ECMAScript 6引入的功能之一是能够在JavaScript中指示未指定参数的默认值,例如

function foo(a = 2, b = 3) {
    return a * b;
}

console.log(foo());   // 6
console.log(foo(5));  // 15

现在我想知道是否可以对使用Function构造函数动态创建的函数使用默认参数,如下所示:

new Function('a = 2', 'b = 3', 'return a * b;');

Firefox 39似乎已经支持默认参数(see here),但上述行被拒绝作为语法错误。

2 个答案:

答案 0 :(得分:0)

因为new Function是eval的一种形式,您可以使用以下代码执行该任务:

eval('function bar (a = 2, b = 3) { return a * b; }');

答案 1 :(得分:0)

我不知道这是否应该有效 - 其他人将不得不告诉你 - 但如果它仍然是一个问题,为什么不使用eval()?

关于这一点的内容应该是合法的:

var fct1 = eval("(function foo(a = 2, b = 3) { return a * b; })")