笔记:箭头函数和普通函数

146 阅读1分钟

什么是箭头函数?

是es6新增的语法,箭头可以用简单的语法去定义函数,箭头函数可以替代传统函数function() {}。本质上来讲,箭头函数是一个return语句。

不同

简单从结构上看,两者都有圆括号(一般用来放置参数的)和大括号(一般用于放置函数主体的)。

1.箭头函数不能被命名,箭头函数函数表达式,是匿名的,匿名函数不用参数或者限定参数来执行,没有构造能力。而普通函数可以是函数表达式,也可以是函数声明。

2.普通函数可以通过new 来创建构造函数的实例,箭头函数则不行。箭头函数不是构造函数,因为箭头函数创建的时候程序不会为这个箭头函数创建 Construct 方法,不能用new关键字来调用箭头函数,因此也不需要构造函数原型,也就是不会自动生成prototype属性。

3.普通函数this指向是动态的,定义this的时候,这个值不会被马上确认,而是在实际执行的时候再进行确认,箭头函数的this指向取决于它的外部。

总结

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

  1. 箭头函数没有prototype(原型),所以箭头函数本身没有this
  2. 箭头函数的this指向在定义的时候继承自外层第一个普通函数的this。
  3. 不能直接修改箭头函数的this指向
  4. 箭头函数外层没有普通函数,严格模式和非严格模式下它的this都会指向window(全局对象)