函数构造器的增强能力
Function
构造器允许你动态创建一个新函数,但在 JS
中并不常用。传给该构造器的参数都是字符串,它们就是目标函数的参数与函数体,这里有个范例:
var add = new Function("first", "second", "return first + second");
console.log(add(1, 1)); // 2
javascript
ES6
增强了 Function
构造器的能力,允许使用默认参数以及剩余参数。对于默认参数来说,你只需为参数名称添加等于符号以及默认值,正如下例:
var add = new Function("first", "second = first",
"return first + second");
console.log(add(1, 1)); // 2
console.log(add(1)); // 2
javascript
在此例中,当只传递了一个参数时,first
的值会被赋给 second
参数,此处的语法与不使用 Function
的函数声明一致。
而对剩余参数来说,只需在最后一个参数前添加 …
即可,就像这样:
var pickFirst = new Function("...args", "return args[0]");
console.log(pickFirst(1, 2)); // 1
javascript
此代码创建了一个仅使用剩余参数的函数,让其返回所传入的第一个参数。
默认参数和剩余参数的添加,确保了 Function
构造器拥有与函数声明形式相同的所有能力。