初识JavaScript函数Arguments模拟重载

简介: 初识JavaScript函数Arguments模拟重载

前言


在 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对象。常常利用该属性实现递归。


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


目录
相关文章
|
16小时前
|
JavaScript 安全 前端开发
js的map函数
js的map函数
7 0
|
16小时前
|
JavaScript 前端开发
js的filter函数
js的filter函数
5 1
|
16小时前
|
JavaScript 前端开发
js的join函数
js的join函数
5 1
|
17小时前
|
开发框架 JavaScript .NET
Js字符串操作函数大全
Js字符串操作函数大全
6 1
|
4天前
|
JavaScript 前端开发 C++
【Web 前端】JavaScript window.onload 事件和 jQuery ready 函数有何不同?
【5月更文挑战第2天】【Web 前端】JavaScript window.onload 事件和 jQuery ready 函数有何不同?
|
6天前
|
JavaScript 前端开发
<body> 中的JavaScript函数
【5月更文挑战第1天】<body> 中的JavaScript函数。
8 3
|
6天前
|
JavaScript 前端开发
<head> 中的JavaScript 函数
【5月更文挑战第1天】<head> 中的JavaScript 函数。
8 2
|
7天前
|
JavaScript
变量和函数提升(js的问题)
变量和函数提升(js的问题)
|
7天前
|
JSON JavaScript 前端开发
深入探讨javascript的流程控制与分支结构,以及js的函数
深入探讨javascript的流程控制与分支结构,以及js的函数
|
7天前
|
JavaScript 前端开发 容器