ES6 arrow function
rest参数
-
...params
形式的参数,被称为rest参数。 -
...params
中params是数组,可以使用数组的所有方法。 -
...params
形式的参数,必须是参数的最后一个。
基本用法
//箭头函数
f = v => v;
- 第一个f代表函数名。匿名函数时,可省略。
- 第一个v代表函数参数。有一个时,直接写。有多个时,可用小括号包裹。没有时,用空括号。
- 第二个v代表返回v,等价于
return v
。当有多条语句时,使用大括号和return。一条语句时,省略大括号和return。 - 箭头函数可以使用对象解构,可以使用rest参数。
- 返回对象时,需要添加小括号。
简化回调函数
// 回调函数多是匿名函数
const arr = [1,2];
// arr.map(匿名函数);
arr.mao(v=>v*v);
注意点
- 箭头函数中this指向的是定义时所处的作用域。因此不可变,有利于封装回调函数。
- 箭头函数不能当做构造函数。
- 箭头函数中不能使用arguments。
- 箭头函数不能使用yield命令,因此不能做generator函数。
// this
function Timer () {
this.s1 = 0;
this.s2 = 0;
setInterval(() => this.s1++,1000);
setInterval(function(){
this.s2++;
},1000)
}
var timer = new Timer();
setTimeout(() => console.log('s1: ', timer.s1), 3100);
setTimeout(() => console.log('s2: ', timer.s2), 3100);
分析与总结:
- 对于箭头函数而言,this指向定义时的作用域。
- 当创建对象时,箭头函数中this指向构造函数,并执行3次。
- 当创建对象时, 匿名函数中this指向全局对象。
- 当不创建对象时,箭头函数和匿名函数都指向window。
箭头函数可以嵌套
Arrow Functions
- 需要匿名函数时,优先使用箭头函数。报错,
prefer-arrow-callback
。 - 函数体,单个语句,需要省略括号和return。报错,
arrow-paren
,arrow-body-style
。 - 参数换行导致的多行,外部添加小括号。
- 当参数只有一个时,是否省略括号需要参考函数体。当函数体省略时,参数的也省略。报错,
arrow-paren
。 - 函数体单个语句时,语句中有
<
或者>
或者<=
或者=>
需要添加小括号。报错,no-confusing-function
。