`

ECMAScript arguments 对象

 
阅读更多

arguments 对象

在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。

例如,在函数 sayHi() 中,第一个参数是 message。用 arguments[0] 也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,第二个参数位于位置 1,依此类推)。

因此,无需明确命名参数,就可以重写函数:

function sayHi() {
  if (arguments[0] == "bye") {
    return;
  }

  alert(arguments[0]);
}

检测参数个数

还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。

下面的代码将输出每次调用函数使用的参数个数:

function howManyArgs() {
  alert(arguments.length);
}

howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);

上面这段代码将依次显示 "2"、"0" 和 "1"。

注释:与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据 Netscape 的文档,最多可接受 255 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。

模拟函数重载

用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载:

function doAdd() {
  if(arguments.length == 1) {
    alert(arguments[0] + 5);
  } else if(arguments.length == 2) {
    alert(arguments[0] + arguments[1]);
  }
}

doAdd(10);	//输出 "15"
doAdd(40, 20);	//输出 "60"

当只有一个参数时,doAdd() 函数给参数加 5。如果有两个参数,则会把两个参数相加,返回它们的和。所以,doAdd(10) 输出的是 "15",而 doAdd(40, 20) 输出的是 "60"。

虽然不如重载那么好,不过已足以避开 ECMAScript 的这种限制。

分享到:
评论

相关推荐

    javaScript arguments 对象使用介绍

    实际上,函数体内可以通过 arguments 对象来接收传递进来的参数。 代码如下: function box() { return arguments[0]+’ | ‘+arguments[1]; //得到每次参数的值 } alert(box(1,2,3,4,5,6)); //传递参数 ...

    Javascript中arguments对象的详解与使用方法

    ECMAScript中的函数并不介意传递的参数有多少,也不介意是什么类型。由于JavaScript允许函数有不定数目的参数,所以我们需要...这就是arguments对象的由来。这篇文章将详细介绍Javascript中的arguments对象和使用方法。

    ECMAScript 2018快速入门 高清完整PDF

    7.7.4没有arguments对象 65 7.7.5定义方法时使用箭头函数 65 7.7.6不能用作构造函数 65 7.7.7没有原型 65 7.7.8不能作为生成器 65 7.7.9返回对象字面量 65 7.8小结 65 第8章集合和映射 67 8.1Set 67 8.1.1基本语法 ...

    ECMAScript6的新特性箭头函数(Arrow Function)详细介绍

    箭头函数是ECMAScript 6最受关注的更新内容之一。它引入了一种用「箭头」(=>)来定义函数的新语法,它…...更不能通过arguments对象访问传入参数。只能使用显式命名或其他ES6新特性来完成。这些差异的存在是有理可循的

    ECMAScript6函数剩余参数(Rest Parameters)

    我们知道JS函数内部有个arguments对象,可以拿到全部实参。现在ES6给我们带来了一个新的对象,可以拿到除开始参数外的参数,即剩余参数(废话好多 O(∩_∩)O~)。 这个新的对象和arguments不一样,它是程序员自定义...

    《精通Javascript+jQuery》光盘源码

     2.8.2 用arguments对象访问函数的参数  2.8.3 实例:杨辉三角  2.9 其他对象  2.9.1 对象简述  2.9.2 时间日期:Date对象  2.9.3 数学计算:Math对象  2.10 BOM基础  2.10.1 window对象  2.10.2 ...

    Javascript数组操作高级心得整理

    (2) 关于函数的arguments对象 9  在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。 9  使用arguments.length检测参数个数 9  模拟函数重载 10 (3) Function对象(类) 10  ...

    轻松学习JavaScript函数中的 Rest 参数

    在ECMAScript 6之前,JavaScript有一个变量来访问这些未知或可变数目的参数,这是一个类似数组的对象,并非一个数组。细想以下代码来理解arguments变量: function add(){ var result = 0; for(let i=0;i<...

    精通JavaScript+jQuery Part1

     2.8.2 用arguments对象访问函数的参数  2.8.3 实例:杨辉三角  2.9 其他对象  2.9.1 对象简述  2.9.2 时间日期:Date对象  2.9.3 数学计算:Math对象  2.10 BOM基础  2.10.1 window对象  ...

    将函数的实际参数转换成数组的方法

    值得庆幸的是,我们可以通过数组的 slice 方法将 arguments 对象转换成真正的数组: var args = Array.prototype.slice.call(arguments);对于slice 方法,ECMAScript 262 中 15.4.4.10 Array.prototype.slice (start...

    JavaScript高级教程

    2.11.2 arguments 对象..............................................53 2.11.3 Function 类..............................................54 2.11.4 闭包..............................................56 ...

Global site tag (gtag.js) - Google Analytics