ES6学习笔记之箭头函数

1、什么是箭头函数

箭头函数就是代替function()这个函数的简写

var f = v => v;    //var f就是定义一个函数名,=v是函数f的参数,=>v就是返回v

// 等同于
var f = function (v) {
  return v;
};


2、使用箭头函数后,this的指向有什么变化
在js机制里面,没有被定义的this默认指向window,箭头函数里面的this指向的是document对象,是定义时所在的对象而不是使用时所在的对象
this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。正是因为它没有this,所以也就不能用作构造函数。

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

// ES5
function foo() {
  var _this = this;

  setTimeout(function () {
    console.log('id:', _this.id);
  }, 100);
}

3、箭头函数的优点

箭头函数可以与变量解构结合使用
const full = ({ first, last }) => first + ' ' + last;

// 等同于
function full(person) {
  return person.first + ' ' + person.last;
}

箭头函数使得表达更加简洁
const isEven = n => n % 2 === 0;
const square = n => n * n;

简化回调函数
// 正常函数写法
[1,2,3].map(function (x) {
  return x * x;
});

// 箭头函数写法
[1,2,3].map(x => x * x);
 
需要注意的点:
大括号被解释为代码块,如果返回的是对象,要在对象外面加上括号,否则报错。
argumentssupernew.target这三个在箭头函数中也不存在~~~~~

不可以使用new命令,否则会抛出一个错误

不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
不可以使用yield命令
 
 





posted @ 2020-03-05 14:29  hongyafang02  阅读(171)  评论(0编辑  收藏  举报