初识 JavaScript 函数 Arguments 模拟重载

发布于 2023-05-12 08:52:30 字数 1117 浏览 44 评论 0

在 JavaScript 中并没有重载函数的功能,但每个函数中的 Arguments 对象可以模拟重载的实现。

1. 通过下标访问实参

arguments 不是一个数组对象,没有数组对象所有的属性和方法,但通过 arguments[0]arguments[1] 等方式获取实参。

function demo() {
  let str = ''
  for (let i = 0; i < arguments.length; i++) {
    str += arguments[i] + ', '
  }
}
console.log(demo('小明', '小红')) // 输出:小明, 小红,

2. 实现重载

利用 Arguments 对象实现函数重载的方式可以有几种,除了根据参数的个数,还可以根据传入参数的类型、或者利用参数中特殊的参数值来执行不同的操作。

// 通过参数个数实现重载
function overloadDemo() {
  switch (arguments.length) {
    case 0:
      console.log(0)
      break
    case 1:
      console.log(1)
      break
    default:
      console.log(arguments.length)
      break
  }
}
overloadDemo('name') // 输出:1

3. callee 属性

Arguments 对象的 callee 属性指向的是正在被执行的 Function 对象。常常利用该属性实现递归。

function sum(n) {
  if (n == 1) {
    return 1
  } else {
    return n + arguments.callee(n - 1)
  }
}
console.log(sum(5)) // 输出:15

但是 arguments.calleearguments.caller 已经在 ES5 严格模式中禁用,将来也会彻底移除。

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

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

发布评论

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

关于作者

酷炫老祖宗

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

亽野灬性zι浪

文章 0 评论 0

少年亿悲伤

文章 0 评论 0

南七夏

文章 0 评论 0

qq_EJoXxu

文章 0 评论 0

17780639550

文章 0 评论 0

萌逼全场

文章 0 评论 0

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