箭头函数和普通函数的区别

89 阅读1分钟
  • 普通函数 可以用new声明
  1. function () {}
  • 箭头函数 不能命名、不能用new声明、没有prototype原型对象、没有自己的arguments对象、
  1. () => {}
  2. 使箭头函数看起来有arguments
function normal () {
    return () => arguments.length
}
let arrow = normal(1,2,3)
console.log('今天吃了' + arrow() + '碗饭'
  1. this指向定义箭头函数时的对象,也就是说this会指向包裹箭头函数最近一层的普通函数的this
let normal = {
    bibi: "bibi",
    biubiu: function () {
        setTimeout(function () { console.log(this.bibi) }, 10) //undefined
        //setTimeout为回调函数会在执行栈中的同步任务执行完后再执行此时执行上下文为window
    }
}
let normal1 = {
    bibi: "bibi",
    biubiu: function () {
        setTimeout(() => { console.log(this.bibi) }, 10) //bibi
    }
}
normal.biubiu()
normal1.biubiu()
  1. 箭头函数不可以使用call apply bind来改变this的指向,但是箭头函数依旧可以使用这些函数