ES6-箭头函数
基本用法
1.var func=v=>v
var f=v=>v
//等同于:
var f=function(v){
return v;
}
2.var func=()=>v
var f=()=>5;
//等同于:
var f=function(){
return 5;
}
3.var func=(num1,num2)=>um1+num2
var sum=(num1,num2)=>um1+num2;
//等同于:
var sum=function(num1,num2){
return num1+num2;
}
总结:
1.箭头函数不需要参数或者需要多个参数,就使用圆括号代表参数部分;
2.如果箭头函数的代码块部分多于一条语句,就要使用大括号将其括起来,并使用return语句返回;
3.箭头函数可以与变量解构结合使用:
const full=({first,last})=>first+’ '+last;
注意事项
1.函数体内的this对象就是定义时所在的对象,而不是使用时所在的对象,即箭头函数中this的指向是固定的;
2.不可以当做构造函数;
3.不可以使用arguments对象,该对象在函数体内不存在,可以用rest代替;
4.不可以使用yield命令,因此箭头函数不能作为Generator函数。
嵌套的箭头函数
let insert = (value) => ({
into: (array) => ({
after: (afterValue) => {
array.splice(array.indexOf(afterValue) + 1, 0, value);
return array;
}
})
});
insert(2).into([1, 3]).after(1);//[1,2,3]
绑定this
ES7提出了“函数绑定”运算符,用来取代call、apply、bind调用。Babel转码器已经支持
函数绑定运算符:双冒号(::)
双冒号左边是一个对象,右边是一个函数。该运算符会自动将左边的对象作为this对象绑定到右边的函数上
例如
foo::bar;
//等同于
bar.bind(foo);
foo::bar(...arguments);
//等同于
bar.apply(...arguments);
*双冒号运算符返回的还是原来的对象,可以采用链式写法
let {find,html}=jake;
document.querySelectorAll('div.myClass')
::find('p')
::html('hahhhahah');