避免 ES7 中常见的 arguments VS `...args` 错误

阅读时长 4 分钟读完

随着 ECMAScript 的发展,JavaScript 语言的功能越来越强大。ES6 中引入的箭头函数、解构赋值、类等新特性已经得到广泛的应用。而在 ES7 中,则引入了更为方便的可变参数和 rest 参数。但是在使用锐利这些新特性时,也要注意一些常见的错误,其中最常见的就是 arguments VS ...args 错误。本文将详细介绍这个问题,并提供一些指导意义。

什么是 arguments 和 ...args

arguments 是 JavaScript 中用于访问函数参数的对象,它可以用来获取到函数中传入的所有参数,甚至包括那些没有被声明的参数。而在 ES6 开始,JavaScript 中引入了 rest 参数,表示一个函数可以接受任意个数的参数。...args 就是 rest 参数的一种语法,它可以将所有传入的参数保存到一个数组中。

arguments VS ...args

在 ES7 中,我们可以使用 ...args 来代替 arguments,从而使代码更加简洁、易读。但是在处理函数调用的参数时,有时候我们会把 arguments 和 ...args 搞混,导致程序出错。下面是一个例子:

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

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

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

在这个例子中,我们定义了一个函数,它有两个必选参数 a 和 b,和一个 rest 参数 args。当我们传入 5 个参数时,函数会打印出 a、b 和 args 的值,以及所有参数的和。但是请注意,我们在计算所有参数的和时,使用了 arguments,而不是 rest 参数 args。这是因为 arguments 包括了所有的参数,而 ...args 只包括了多余的参数。如果我们把该段代码改为使用 args,就会得到错误的结果:

如何避免 arguments VS ...args 错误?

为了避免 arguments VS ...args 错误,我们应该在函数定义的时候决定使用哪种方式来获取函数参数。如果我们使用了 rest 参数,就应该在函数内部使用 ...args 来访问参数。如果我们使用了 arguments,就应该使用 arguments 来访问参数。下面是一个修改后的例子:

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

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

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

在这个例子中,我们修改了获取参数的方式。当我们使用 rest 参数时,就使用 ...args 访问参数,而不是 arguments。

总结

在 ES7 中使用 arguments 和 ...args 已经成为一种常见的错误。为了避免这种错误,我们应该明确自己要使用哪种方式来获取函数参数,并在实现时严格按照规范来编写代码。同时,我们也可以使用 ESLint 工具来检查代码中的错误,从而让我们更加自信地编写 JavaScript 代码。

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

纠错
反馈