匿名函数可以用箭头函数来写
{
//没有参数的情况下,得加上小括号
setTimeout(()=>console.log(1),100);//1
//有一个参数的情况下,可以省略小括号
let f=x=>x;
console.log(f(2));//2
//大于一个参数情况下要加上小括号
let name=(x,y)=>x+y;
console.log(name(2,3));//5
//如果箭头函数里只是一条语句,可以省略大括号,并且自动加上return
}
{
//如果箭头函数里大于一条语句,就跟平时写的函数一样,
let a;
let show = x => {
a=x;
console.log(a);//3
return a;
};
console.log(show(3));//3
}
{
//如果需求只要return一个json对象,并且是一条语句,那么需要加上小括号
let f=(x,y)=>({x:x,y:y});
console.log(f(2,3));
}
使用箭头函数需要注意的几点
- 1 箭头函数没有自己的this,用的是上级的this,这在回调函数当中非常有用,因为箭头函数没有自己的this,所以bind方法无效,内部的this指向外部的this
{
let a=0;
let json={
a:9,
b:function (){
setTimeout(()=>{
console.log(this.a);//9
},100);
}
}
json.b();
}
{
let f=()=>this;
console.log(f.call({a:3}));//window
}
- 2 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
{
let json={
a:2,
b:()=>{
console.log(arguments);
}
};
//json.b(1,2,3);// arguments is not defined
}
用rest代替arguments
{
let json={
a:2,
b:(...arr)=>{
console.log(arr);
}
};
json.b(1,2,3);// [1, 2, 3]
}
- 3因为箭头函数没有自己的this,所以不能使用构造函数,否则会报错
箭头函数就介绍这么多了,希望能帮助大家更好的初步了解,想看更详细的资料请狠狠的点击我