es6之箭头函数
=> 箭头函数是ES6增加的函数表达式。将function关键字和函数名都删掉,并使用“=>”连接参数列表和函数体(低版本浏览器不支持)
箭头函数看上去只是语法的变动,其实也影响了this的作用域
1、无参数时候必须有括号
let fn = function(){ return 'helloWorld'; } //简写为: let fn = ()=>{ //但是没有参数时,括号不可以省略 return 'helloWorld'; } //根据规则二,简写为: let fn = ()=>'helloWorld';
2、当函数只有一个参数时括号可以省略
let fn = function(a){ return a; } //简写为: let fn = (a)=>{ return a; } //根据规则一,还可以简写为: let fn = a=>{ return a; } //根据规则二,还可以简写为: let fn = a=>a;
3、有多个参数必须写括号
let fn = function(a,b){ return a+b; } //简写为: let fn = (a,b)=>{ //多于一个参数,圆括号不可省略 return a+b; } //根据规则二,还可以简写为: let fn = (a,b)=>a+b;
4、函数体{}中只有一行return语句时,大括号及return 可以省略。等同于return 运算结果
//一行 let fn = (a) => a; //return a let fn = (a) => { return a; };
使用箭头函数需要注意的有以下几点:
1)箭头函数不可以使用new(不能当做构造函数),否则报错
2)用了箭头函数,this就不是指向window,而是父级(指向是可变的)
3)不可以使用arguments,该对象在函数体内不存在。如果用,rest 参数来代替
4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数