ES6 中的默认参数和剩余参数详解

阅读时长 5 分钟读完

在 ES5 中,我们在函数中使用默认值通常是通过逻辑运算符实现的。但是,ES6 标准引入了默认参数与剩余参数,为我们提供了更加简洁和灵活的方式来实现类似的功能。本文将深入探讨 ES6 中的默认参数和剩余参数的相关内容,为读者提供详细和有指导意义的知识点。

默认参数

默认参数是指可以在定义函数的参数时设置一个默认值,当函数被调用但值没有被传递时,该默认值会被使用。默认参数是用于确保代码在某些情况下总是被执行的一种可靠方法。

使用方法

在函数的参数列表中为某个参数指定一个默认值,只要在参数名称后面加上等于号,再加上默认值即可。例如:

如果函数调用时有传递参数,则会覆盖默认参数。如果出现多个默认参数,则可以按任意顺序传递值,将默认参数保持在其默认值:

在上面的例子中,如果 x 传递了 undefined(而不是没有传递值),默认值 10 就会被使用。

与 arguments 对象的比较

在 ES5 中,我们通常使用 arguments 对象来获取函数的参数列表。以下是一个示例:

-- -------------------- ---- -------
-------- ----- -
  --- ----- - --
  --- ---- - - -- - - ----------------- ---- -
    ----- -- -------------
  -
  -------------------
-
------ -- --- -- -
------ -- -- --- -- --
展开代码

相同的函数可以使用默认参数编写得更加简洁和可读:

惰性求值

另一个有趣的特性是在指定参数默认值时,我们可以在函数体内再次调用该函数本身(或者任何其他函数或表达式)来作为默认值。这种机制使我们能够实现惰性求值,只有在需要时才计算某些复杂的值。例如:

-- -------------------- ---- -------
-------- ---------- -
  ------------------------
  ------ ---
-
-------- ----- - ----------- - - ----------- -
  ------------- - ---
-
------ --- -- -
------- -- --------- --
------ -- --------- --------- -- 
展开代码

在第一个调用中,我们要求 x 等于 2,所以 getValue() 从来没有被调用。在第二个调用中,我们仍然要求 x 等于 1getValue() 呈现在输出中。然而,在第三个调用中,我们为 add 传递了任何值,所以两个参数值都是默认值,导致 getValue() 被调用两次。

剩余参数

在函数参数列表中,剩余参数是指可以让函数接受任意数量的参数,并将它们作为一个数组传递的参数。相对于传统的“arguments”对象,剩余参数更易于操作,并且更容易扩展。

使用方法

与默认参数相同,我们使用 ... (单个点号) 来定义剩余参数。例如:

在上例中,a 是第一个参数,而 moreArgs 将表示任何其他传递的参数的数组。

比较 arguments

ES6 中的剩余参数可以让我们否决 ES5 中大多数人使用的“arguments”对象。比较以下两个实现,可以看出使用剩余参数更可读和易处理:

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

-- ---
-------- ---------------------- ----------- -
  ------ ------------------------
-
---------------- ------ ------- -- ---------
展开代码

在 ES6 中,可以使用剩余参数将函数定义为一个更具表现力和易于理解的方式。

与默认参数的比较

有时候,我们会既需要默认参数,又需要剩余参数。默认参数必须是所有参数中最后一个参数,而剩余参数总是最后一个参数,所以一个函数不能同时拥有两种类型的参数。但是,我们仍然可以编写实现这种功能的代码。例如:

在此示例中,xy 是默认参数,而 rest 包含任何其他传递的值。通过将 y 的值设置为 undefined,我们可以使 x 成为第一个传递的参数,而 rest 变成剩余的参数。

总结

在 ES6 中,使用默认参数和剩余参数可以使代码更加紧凑和可读。它们使我们能够更好地使用 ES6 中的新功能,例如箭头函数,扩展符号和其他特定的功能。在编写 ES6 代码时,学习并使用默认参数和剩余参数是必不可少的部分。

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

纠错
反馈

纠错反馈