函数新增特性

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 函数。

results matching ""

    No results matching ""