javascript参数arguments对象

  ECMAScript函数的参数与大多树其他语言中函数的参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么类型。函数体是通过arguments对象来访问参数数组。arguments对象只是与数组类似,但并不是数组实例。

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

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

  function sayHi(){

    alert("Hello " + arguments[0] + "x" + arguments[1]);

  }

检测参数个数

  还可以用 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 的这种限制。

时间: 2024-12-14 03:19:42

javascript参数arguments对象的相关文章

[译]Javascript 参数(arguments)对象

本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b Javascript 参数(arguments)对象是一个在所有函数中都可用的本地变量.其包含了所有传给函数的参数,并且像数列一样排着序.参数对象的长度就是传给函数的参数个数. JavaScript 参数对象例子: fu

javascript的arguments对象简单介绍

javascript的arguments对象简单介绍:这里以最简单的方式介绍一下arguments对象的用法,先看一段代码: var a=1; var b=2; function mytest(a,b){ var c=a+b; document.write(arguments[0]); } mytest(1,2); 以上代码可以输出传递给函数的第一个参数,也就是说通过类似于数组的索引值可以访问传递给函数的参数,而无需使用参数的名称.这里就介绍这么多了,希望能够给初学者一个最初的理解. 原文地址是

js理解参数-arguments对象

js理解参数-arguments对象: 1. ECMAScript函数的参数: ECMAScript函数的参数在内部是用一个数组来表示的,函数接收到的始终是这个数组,而不关心数组中包含多少个参数,也不在乎传进来的参数是什么数据类型. 在函数体内可以通过arguments对象来访问这个参数数组. 2. 关于命名参数的问题: ECMAScript函数中命名的参数只提供便利,但不是必需的.在ECMAScript中,解析器不会验证命名参数,而是通过访问arguments对象的length属性获得参数的个

javascript基础-arguments对象

arguments是函数内部自带的对象,它是一个类数组的存在,所谓的类数组就是没有数组的方法, 但可以通过下标来访问内部的元素,也有length属性.它的作用呢? 保存了函数调用的时候传入的实际的参数,通过length属性可知道传入参数的数量. 比如例子中的函数fn function fn(arg1,arg2,arg3,arg4) { //此时arguments.length不是4,因为它不是由声明函数时的形参数量决定的 //而是由调用fn时传入的参数的数量决定的 } fn(1,2,3); ar

JavaScript的arguments对象

1.在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性.arguments非常类似Array,但实际上又不是一个Array实例.可以通过如下代码得以证实(当然,实际上,在函数funcArg中,调用arguments是不必要写成funcArg.arguments,直接写arguments即可). 1 Array.prototype.testArg = "test"; 2 function funcArg() { 3 alert(funcA

2015第37周五javascript函数arguments对象巧用一

Javascript函数的一个巧妙利用:假定action中有一个JSONObject类型的对象data,其值有可能为空,则前台JSP页面的JS代码中想直接通过EL表达式,即${data}的形式访问对象的值,则可能会因为data对象为空导致JS预处理错误,如JSP中有这样的代码,var obj=${data};,则当后台data为null时前台页面会变成var obj=;进而页面报错终止运行.有人想通过类似 var obj=('${data}'==''?{}:${data})来解决,但该代码依旧编

函数中的 arguments 对象

JavaScript函数具有像数组一样的对象,这些对象称为arguments,与传递给函数的参数相对应.传递给JavaScript函数的所有参数都可以使用arguments对象来引用. 现在我们开始学习,仔细看下面列出的代码: function add(num1, num2) { var res = num1 + num2; return res; } var r = add(7, 8); console.log(r); 在上面的函数中,num1和num2是两个参数.你可以使用名为num1和nu

arguments对象

ECMAScript函数不介意传递进来多少参数,也不会因为参数不统一而错误.实际上,函数体内可以通过arguments对象来接收传递进来的参数 . Function box(){ return arguments[0]+'|'+arguments[1]; //得到每次参数的值 } alert(box(1,2,3,4,5,6)); //传递参数 arguments对象的length属性可以得到参数的数量. function box(){ return arguments.length; //得到6

在js中arguments对象的理解

一.在函数调用的时候,浏览器每次都会传递进两个隐式参数 函数的上下文对象this 封装实参的对象arguments 二.arguments 对象 arguments 对象实际上是所在函数的一个内置类数组对象 每个函数都有一个arguments属性,表示函数的实参集合,这里的实参是重点,就是执行函数时实际传入的参数的集合.arguments不是数组而是一个对象,但它和数组很相似,所以通常称为类数组对象,以后看到类数组其实就表示arguments.arguments对象不能显式的创建,它只有在函数开