ES6 新增特性

警告
本文最后更新于 2023-10-22,文中内容可能已过时。

ES6 新增特性

箭头函数 this 的指向问题

https://www.zhihu.com/tardis/zm/art/57204184?source_id=1003

箭头函数体内的this对象,就是定义该函数时所在的作用域指向的对象,后续无法改变,而不是使用时所在的作用域指向的对象。

箭头函数没有 prototype,所以箭头函数本身没有 this,他只会从自己作用域链的上一层继承 this,在箭头函数定义时他会捕获自己所处的执行上下文环境的 this 并继承下来,所以箭头函数的 this 是在他被定义的时候就已经确定了,之后不会再改变了,这一点,跟通过 function 定义的函数不一样,通过 function 定义的函数中的 this,指向的是函数调用者对象,可以动态绑定。

执行上下文:指当前执行环境中的变量、函数声明,参数(arguments),作用域链,this 等信息。分为全局执行上下文、函数执行上下文,其区别在于全局执行上下文只有一个,函数执行上下文在每次调用函数时候会创建一个新的函数执行上下文。

  • 全局执行上下文 在浏览器中全局上下文的变量对象就是 window 对象,在 node 环境下就是 global 对象

  • 函数执行上下文 函数执行上下文可存在无数个,每当一个函数被调用时都会创建一个函数执行上下文,并且,同一个函数被多次调用时,都会创建一个新的上下文环境。

箭头函数其他几点需要注意的地方

  1. 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
  2. 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
  3. 不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
0%