ES6 的箭头函数和普通函数的差异及适用场景

阅读时长 5 分钟读完

在 ES6 中,新增了一种函数类型——箭头函数。相比普通函数,箭头函数具有一些不同之处。本文将详细介绍箭头函数和普通函数的差异,并且探讨它们的适用场景。

箭头函数和普通函数的不同之处

  1. 语法不同

箭头函数使用箭头(=>)来定义,而普通函数使用 function 关键字。

  1. this 指向不同

箭头函数的 this 指向是固定的,指向定义时所在的作用域;普通函数的 this 指向则是在调用时确定的。

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

-- ----
----- ------ - -
  ----- --------
  ------ ---------- -
    -------- ------- -
      ------------------- -- ---- -- ---------------
    -
    --------
  --
--
--------------- -- --------- -- ---- -- ---------
  1. 无法使用 arguments 对象

箭头函数没有自己的 arguments 对象,所以在箭头函数中使用 arguments 会引用外层函数的 arguments

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

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

箭头函数和普通函数的适用场景

  1. 适用箭头函数的场景
  • 回调函数:箭头函数可以更简洁地表示回调函数,避免了使用 bind 或者 that = this 的方式来绑定 this
  • 简单的函数体:箭头函数适用于函数体比较简单的情况,可以更加简洁地表达函数的含义。
  1. 适用普通函数的场景
  • 需要使用 this 的场景:普通函数可以使用 this 关键字来引用调用函数的对象,比如在构造函数中创建对象。
  • 需要使用 arguments 对象的场景:普通函数可以使用 arguments 对象来获取传递给函数的参数,比如在处理可变参数的函数中。

示例代码

下面是一些示例代码,展示箭头函数和普通函数的差异和适用场景。

  1. 回调函数
-- -------------------- ---- -------
-- ------
----- ------- - --- -- -- -- ---
----- ------- - --------------- -- - - ---

-- ------
----- ------- - --- -- -- -- ---
----- ------- - ----------------------- -
  ------ - - --
---
  1. 构造函数
-- -------------------- ---- -------
-- ------
-------- ------------ -
  --------- - -----
  ------------ - ---------- -
    --------------- ---- -- ---------------
  --
-
----- ----- - --- ----------------
---------------- -- ----- ---- -- -----

-- ------
----- ------ - ------ -- -
  --------- - -----
  ------------ - -- -- -
    --------------- ---- -- ---------------
  --
--
----- ----- - --- ----------------
---------------- -- -- --------- --
  1. 处理可变参数的函数
-- -------------------- ---- -------
-- ------
-------- ----- -
  --- ----- - --
  --- ---- - - -- - - ----------------- ---- -
    ----- -- -------------
  -
  ------ ------
-
------ -- -- -- --- -- -----

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

总结

箭头函数和普通函数各有优缺点,应该根据具体的场景来选择使用哪种函数。在使用箭头函数时,需要注意它的 this 指向和无法使用 arguments 对象的问题。在使用普通函数时,需要注意它的函数体可能会比较冗长。

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

纠错
反馈