对 ES6 箭头函数 this 值得深思

阅读时长 3 分钟读完

在 Javascript 中,this 指的是当前执行上下文的对象。this 的值可以根据函数调用的方式和位置来变化。但是在 ES6 中,引入了箭头函数,箭头函数不同于普通函数,它的 this 是词法作用域,也就是说箭头函数里的 this 是嵌套它上层作用域的 this,而不是箭头函数自身的 this。

示例代码

-- -------------------- ---- -------
-- ----
----- ----- - -------- -- -
  -----------------------
-
----- ---- - -
  ----- ------- ---
  ----- -----
-
------------ -- -- ------ -

-- ----
----- ----- - -- -- -
  -----------------------
-
----- ---- - -
  ----- ------- ---
  ----- -----
-
------------ -- -- ---------

在上面的代码示例中,函数 func1 是一个普通函数,它的 this 指向的是调用这个函数的对象 obj1。而箭头函数 func2 中的 this 指向的却是全局对象 window,所以它的输出结果是 undefined

箭头函数的使用场景

箭头函数的使用场景和普通函数有所不同。在某些情况下,使用箭头函数可以更加简洁明了。

1. 简化回调函数

在使用回调函数的时候,箭头函数可以更加简洁,减少冗余。

2. 简化嵌套函数

-- -------------------- ---- -------
-- ------
-------- ------- -
  ------ -------- -- -
    ------------------
  -
-
--- --- - --------
------ -- ------ ------

-- ------
-------- ------- -
  ------ -- -- -
    ------------------
  -
-
--- --- - --------
------ -- ------- -------------- ----

在使用嵌套函数的时候,箭头函数可以减少因嵌套导致的 this 指向问题。

总结

ES6 箭头函数与普通函数的差别在于箭头函数没有自己的 this,它继承了上层作用域的 this。因此在使用箭头函数的时候要注意上层作用域的 this 指向,避免产生错误。同时,在某些情况下,使用箭头函数可以简化代码。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a63c9848841e98942d6396

纠错
反馈