2021-01-11 箭头函数有关注意事项

箭头函数有以下几个注意事项

1.函数体内的this对象就是定义时所在的对象,而不是使用时所在的对象

2.不可以当作构造函数。也就是说,不可以使用new命令,否则会抛出一个错误

3.不可以使用argument对象,该对象再函数体内不存在。如果要用,可以用rest参数代替

4.不可以使用yield命令,因此箭头函数不能用作Generator函数。

在箭头函数中,this指向的固定化并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。正是因为它没有this,所以不能用作构造函数。

箭头函数转化为ES5代码如下:

//ES6代码
function foo(){
  setTimeout(()=>{
    console.log('id:',this.id);
  },100);
}
//ES5代码
function foo(){
  var _this = this;
  setTimeout(function(){
    console.log('id:',_this.id);
  },100);
}

转换后的ES5版本清楚的说明了箭头函数里面根本没有自己的this,而是引用外层的this。

除了this,以下3个变量在箭头函数中也是不存在的,分别指向外层函数的对应变量:arguments、super和new.target

你可能感兴趣的:(2021-01-11 箭头函数有关注意事项)