意义:箭头函数一般替代匿名函数。
箭头函数以箭头来区分和理解,
箭头左边是形参列表 ,箭头右边是函数体
注意:箭头函数传参时,一个参数时可以省略圆括号,多个参数时则不能省略圆括号。
// 例如
var f = a => {}
var f = (a,b) =>{}
箭头函数有哪些特性?
1、箭头函数是匿名函数,不绑定自己的this,arguments,super,new,target
2、箭头函数会捕获其所在上下文的this值,作为自己的this值,在使用call/apply绑定时,相当于只是传入了参数,对this没有影响
3、箭头函数不绑定arguments,取而代之用rest参数…解决
4、箭头函数当方法使用的时候,没有定义this绑定
5、箭头函数不能作为构造函数,和 new 一起用就会抛出错误
6、箭头函数没有原型属性
7、不能简单返回对象字面量
// 方式一:
var f = ()=>{
console.log(this);//window
return function(){
console.log(this);//window
}
}
// 方式二:
var f = ()=>{
console.log(this);//window
return () =>{
console.log(this);//window
}
}
f()();
// 方式三
var f = function(){
console.log(this);//{title:"哈哈"}
return function(){
console.log(this);//window
}
}
// 方式四
var f = function(){
console.log(this);//{title:"哈哈"}
return ()=>{
console.log(this);//{title:"哈哈"}
}
}
f.call({title:"哈哈"})();
不能简单返回对象字面量
var fa = () => {
title: '周四';
return 10;
};
// 返回对象的时候js会把{}解析成函数体而不是对象,所以需要增加圆括号消除歧义
var fa = () => ({
title: '周四';
return 10;
});