0%

箭头函数和普通函数区别

箭头函数和普通函数区别

  1. 语法更加简洁清晰

  2. 箭头函数不会创建自己的this

所以它不会有自己的this,它只会从自己的作用域链的上一层继承this,作用域链包括全局作用域,块作用域和函数作用域

  1. 箭头函数继承而来的this指向永远不变

对象obj的方法b时用箭头函数定义的,这个函数中的this永远指向它定义时所处的全局环境中的this,即使这个函数是作为对象obj的方法调用,它依然指向window对象

  1. call()/apply()/bind()无法改变箭头函数中this得指向

call()/apply()/bind()方法可以用来动态修改this的指向,但由于箭头函数的this定义时就已经确定且永远不会改变,所以使用这些犯法永远也改变不了箭头函数this的指向,但是代码也不会报错

  1. 箭头函数不能用作构造函数调用

构造函数的new原理:

箭头函数是ES6中的提出来的,它没有prototype,也没有自己的this指向,更不可以使用arguments参数,所以不能New一个箭头函数。

new操作符的实现步骤如下:

1、创建一个空的简单JavaScript对象(即{});

2、为步骤1新创建的对象添加属性__proto__,将该属性链接至构造函数的原型对象 ;

3、将步骤1新创建的对象作为this的上下文 ;

4、如果该函数没有返回对象,则返回this。

所以,上面的第二、三步,箭头函数都是没有办法执行的。

  1. 箭头函数不能用作Generator函数,不能使用yield关键字