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

115 阅读1分钟

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

箭头函数都是匿名函数

const sum = function sum(a, b) { 
   return a + b
}
//箭头函数
const sum = (a, b) => a + b

箭头函数没有自己的this

箭头函数不能作为构造函数,不具有prototype原型对象,也没有自己的this,它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了,之后不会改变。

var id = '1';
var obj = {
  id: '2',
  a: function(){
    console.log(this.id);
  },
  b: () => {
    console.log(this.id);
  }
};
obj.a();    // '2'
obj.b();    // '1'

箭头函数不能用arguments

箭头函数不绑定arguments,取而代之用rest参数…解决

// 普通函数
function test(a) {
  console.log(arguments) // Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
}
test(1,2,3)
// 箭头函数
const sum = (...a) => {
  console.log(a) // [3, 4]
}
sum(3, 4)

箭头函数不能用super

箭头函数不能用new.target