函数新增特性
1. 函数参数的默认值
ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。
function log(x, y = 'World') {
console.log(x, y);
}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello
2. rest 参数
ES6 引入 rest 参数(形式为 ...变量名
),用于获取函数的多余参数,用来代替 arguments 对象。
rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
//计算所有参数的和
function sum(...numbers) {
return numbers.reduce(function(res, item){
return res + item;
});
}
console.log(sum(10,20,30,40,50,60));
注意:
rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。
rest 参数是真正的数组,数组的方法都可以使用;而 arguments 是类数组对象。
3. 箭头函数
3.1 语法
var f = v => v;
//等同于
var f = function(v) {
return v;
};
var f = () => 5;
// 等同于
var f = function () { return 5 };
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};
如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用 return 语句返回。
var sum = (num1, num2) => {
let sum = num1 + num2;
return sum;
}
箭头函数的一个用处是简化回调函数
// 正常函数写法
var result = values.sort(function (a, b) {
return a - b;
});
// 箭头函数写法
var result = values.sort((a, b) => a - b);
3.2 箭头函数的特点
1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
3)箭头函数内不可以使用 arguments 对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。