JS Function 函数剩余参数

发布于 2024-10-08 09:00:11 字数 1463 浏览 8 评论 0

由来

我们知道 JS 函数内部有个 arguments 对象,可以拿到全部实参。 现在 ES6 给我们带来了一个新的对象,可以拿到除开始参数外的参数,即剩余参数

写法

是程序员自定义的一个普通标识符,只是需要在前面加上三个点: ...

function func(a, ...rest) {
  console.log(a)
  console.log(rest)
}
func(1)
func(1, 2, 3, 4)
// 1
// []
// 1
// [2,3,4]

在前面定义 2 个参数

function func(a, b, ...rest) {
  console.log(a, b)
  console.log(rest)
}
func(1, 2)
func(1, 2, 3, 4)
// 12
// []
// 12
// [3,4]

后面不要再跟其它的参数了,不然会报错

function func(a, ...rest, b) {}
// SyntaxError:parameter after rest parameter

使用剩余参数后,函数的 length 属性会发生一些变化

function func(a, b, ...rest) {}
func.length //(指参数的个数) 2

即 length 不包含 rest,为 2。

剩余参数前面是否可以一个参数都没有呢? 答案是肯定的

function func(...rest) {
  console.log(rest)
}
func(1) // [1]
func(1, 2, 3, 4) // [1,2,3,4]

rest 不能和 arguments 一起使用,会报错

function func(...rest) {
  console.log(rest)
  console.log(arguments)
}
//SyntaxError:'arguments' object may not be used in conjunction width a rest parameter(火狐,谷歌没有)

arguments 和剩余参数的区别

  1. arguments 是一个伪数组(Array-like)
  2. 剩余参数是一个真正数组(Array),具有 Array.prototype 上的所有方法
  3. arguments 上有 callee,callee 上有 caller

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

讽刺将军

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

emdigitizer10

文章 0 评论 0

残龙傲雪

文章 0 评论 0

奢望

文章 0 评论 0

微信用户

文章 0 评论 0

又爬满兰若

文章 0 评论 0

独孤求败

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文