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

GOT*_*O 0 5 javascript default-parameters ecmascript-6

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

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

console.log(foo());   // 6
console.log(foo(5));  // 15
Run Code Online (Sandbox Code Playgroud)

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

new Function('a = 2', 'b = 3', 'return a * b;');
Run Code Online (Sandbox Code Playgroud)

Firefox 39似乎已经支持默认参数(参见此处),但上面的行被拒绝作为语法错误.

Ber*_*rgi 1

现在我想知道是否也可以对使用 Function 构造函数动态创建的函数使用默认参数

是的,根据规范这是可能的。参数参数一如既往地连接起来,然后根据FormalParameters产生式进行解析,其中包括默认值。

Firefox 39 似乎已经支持默认参数,但上面的行被拒绝作为语法错误。

好吧,这是一个错误:-)(可能是这个
您应该能够通过使用来解决它

var fn = Function('return function(a = 2, b = 3) { return a * b; }')();
Run Code Online (Sandbox Code Playgroud)