箭头函数

48 阅读1分钟
  • 箭头函数提供了一种更加简洁的函数书写方式 基本写法为: 函数名=(参数 可以多个)=>{函数体}
 //普通函数
 function fn(a){
  console.log(a)
 }
 fn(1)
 //箭头函数
 f=a=>console.log(a)//  f=(a)=>{console.log(a)}
 f(10)
 //当参数只用一个时,小括号可以不用写,当函数体只有一句代码时,大括号可省略:f=a=>console.log(a)

image.png

  • 当箭头函数要返回对象的时候,为了区分于代码块,要用 () 将对象包裹起来
f=(name,age)=>({name:name,age:age})
console.log(f('karen',18))

image.png

  • 箭头函数的this是离它最近的嵌套的 function方法这个函数的调用者 直到顶层都没有就是window
 let obj={name:'jack',say:function(){
    let f=a=>{console.log(this)}
    f()
  }}
  //箭头函数是看他上一层函数的调用者(如果没有就是window),这里的上一层函数是say,就是看谁调用say,谁就是this
  obj.say()

image.png

  • 箭头函数没有arguments,可以使用…reset,接收过来就是数组类型,接收的是形参之外的所有的实参;
 function fn(a, b) {//普通函数
    console.log(arguments)
  }
  fn(12, 34, 12, 5)
  f = (c, d) => {//箭头函数
    console.log(arguments)
  }
  f(12, 34, 33)

image.png

  f = (c, d,...reset) => {//箭头函数
    console.log(reset)
  }
  f(12, 34, 33,44,6,3)

image.png

  • 箭头函数不是构造函数,不能用new关键字
f=a=>{console.log(111)}
let re=new f()
console.log(re)

image.png

image.png

  • 箭头函数可以与解构一起使用
let f=(a,b)=>{
  return {
    c:a+b,
    d:a-b,
    e:a,
    g:b
  }
}
let {c,d,e,g}=f(12,22)//将函数返回的对象解构赋值给左边声明的变量
console.log(f(12,22))
console.log(c,d,e,g)

image.png