除了语法之外,普通函数和箭头函数之间有什么区别吗?

时间:2016-07-22 16:03:36

标签: javascript ecmascript-6

我最近开始使用ECMAScript 2016的箭头函数而不是原始语法来定义函数。如果我每次想要定义一个函数时都使用这种语法,或者是否存在速度等缺点,那会没关系吗?

(function(){
  alert('Is this');
})();

(()=>{
  alert('somehow better than this?')
})();

2 个答案:

答案 0 :(得分:4)

需要注意的一点是箭头函数没有使用arguments对象。

let test = () => {
  // expect an error
  console.log(arguments);
}

test(1,2,3);

  • 箭头功能词汇绑定this
  • 您无法在箭头功能上使用new

let Person = (name) => {
  this.name = name;
}
   
// expect an error
let person = new Person('Bob');

有许多不同之处,我会检查一些documentation箭头函数。

答案 1 :(得分:1)

箭头函数始终是匿名的,并且lexical this。性能上的差异应该可以忽略不计,但this可能指的是意外的东西(或者它可能指的是你期望的,你不必绑定)。