使用 arguments 对象

arguments 对象表示参数集合,它是一个伪类数组,拥有与数组相似的结构,可以通过数组下标的形式访问函数实参值,但是没有基础 Array 的原型方法。

//函数没有定义形参,但是在函数体内通过 arguments 对象可以获取传递给该函数的每个实参值。
function f () { //定义没有形参的函数
    for(var i = 0; i < arguments.length; i++ ) {  //循环读取函数的 arguments 对象
        alert(arguments[i]);  //显示指定下标的实参的值
    }
}
f(3, 3, 6); //逐个显示每个传递的实参
通过修改arguments对象的 length属性值,也可以达到改变函数实参个数的目的。当 length 属性值增大时,则增加的实参值为 undefined,如果 length 属性值减小,则会丢弃arguments 数据集合后面对应个数的元素。
function f(){
    arguments.length = 2  //修改 arguments 对象的 length 属性值
    for(var i = 0; i < arguments.length; i++ ) {
        alert(arguments[i]);
    }
}
f(3, 3, 6); //返回提示 3、 3

使用 callee 回调函数

arguments 对象包含一个 callee 属性,它引用当前 arguments 对象所属的函数,使用该属性可以在函数体内调用函数自身(arguments.callee())。在匿名函数中,callee 属性比较有用,利用它可以设计函数选代操作。 

//使用 arguments.callee 获取匿名函数,然后通过函数的 length 属性获取函数形参个数,最后比较实参与形参个数以检测用户传递的参数是否符合要求。
function f (x, y, z) {
    var a = arguments.length; //获取函数实参的个数
    var b =arguments.callee.length; //获取函数形参的个数
    if (a != b) { //如果形参和实参个数不相等,则提示错误信息
        throw new Error("传递的参数不匹配");
    } else {    ///如果形参和实参数目相同,则返回它们的和
        return x + y + z;
    }
}
alert(f(3, 4, 5)); //返回值为 12

注:应用范围实参不确定的情况下

原文地址:https://www.cnblogs.com/lanshu123/p/10566724.html

时间: 2024-11-10 01:38:17

使用 arguments 对象的相关文章

JavaScript arguments对象

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

arguments对象的实例使用

新年第一记,从这里开始,先来个简单的!去年的知识梳理留下了很多尾巴,原因有很多(知识储量不足,懒了,项目多...) lg:都是借口~   好吧,我承认,这都是借口,今年一定把尾巴清干净! 下面要写的是知识梳理的第一个案例: 写一个求和的方法sumFn,不管传递的参数有什么,都能将最终的和算出来,并且返回给函数外部使用.(要求:一个参数都不传默认结果为0,对于传递的非正常数字的参数不与累加操作): 这个案例主要要考察的知识点是 arguments 参数,来给个特写,什么意思呢? arguments

对javascript中的arguments对象的认识

arguments是指向实参对象的引用.它可以使用方括号语法访问它的每一个元素(即第一个元素是 arguments[0] ,第二个元素是 argumetns[1] ,以此类推),使用 length 属性来确定传递进来多少个参数,但是arguments 对象只是与数组类似,它并不是 Array 的实例.这样说可能好抽象.那么我们来看看简单的例子. 若定义了f函数,它只有一个参数时.而传入两个实参时,就需要用到arguments来获取参数. function f(x){ alert(x);//输出1

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

JavaScript函数的arguments对象、重载问题

一.arguments对象概述: 1.ECMAScript 函数不介意传递进来多少参数,也不会因为参数不统一而错误. 2.函数体内可以通过 arguments 对象来接收传递进来的参数,并且保存函数参数 function box() { return arguments[0]+' | '+arguments[1]+' | '+arguments[5]; //得到每次参数的值,最后结果是1 | 2 | 6 } alert(box(1,2,3,4,5,6)); //传递参数 二.arguments

浅谈JS的arguments对象

在JavaScript中,arguments属于当前对象的一个内置属性,arguments非常类似于Array对象,但是又不是实例的Array.比如: Array.prototype.testArg = "test"; function funcArg() { alert(funcArg.arguments.testArg); alert(funcArg.arguments[0]); } alert(new Array().testArg); // result: "test

arguments 对象的老历史

引题:为什么 JavaScript 中的 arguments 对象不是数组 http://www.zhihu.com/question/50803453 JavaScript 1.0 1995 年, Brendan Eich 在 Netscape Navigator 2.0 中实现了 JavaScript 1.0,arguments 对象在那时候就已经有了.当时的 arguments 对象很像我们现在的数组(现在也像),它有一些索引属性,对应每个实参,还有一个 length 属性,代表实参的数量

理解Javascript参数中的arguments对象

ECMAScript中函数没有标签名的特性,所以ECMAScript函数中没有重载. Javascript中arguments的存在可以弥补javascript中函数没有重载的不足. Javascript中函数中的参数是以数组的形式保存的,所以在JavaScript中调用函数给函数传递的参数时,不会受到我们定义函数时设置的参数个数的限制.也就是说如果我们给一个函数定义了2个参数,我们传递的时候可以不传,可以传一个,也可以传两个,传三个...都可以,不会受函数参数个数的影响.arguments类似

javaScript中的 if(123) | return | arguments对象

<1> <script type="text/javascript"> //----------------------------if语句 //在javascript中,如果if()语句中的条件 为0或者为"" 这样的空字符串,条件就自动转换成false 否则就会自动转换成true var a = 0; if (a) { //当a为0的时候 ,此时a会转换成false 这里什么都不会打印 alert(a); } var b = "

Effective JavaScript Item 23 永远不要修改arguments对象

本系列作为Effective JavaScript的读书笔记. arguments对象只是一个类似数组的对象,但是它并没有数组对象提供的方法,比如shift,push等.因此调用诸如:arguments.shift(),arguments.push()是错误的. 在Item 20和Item 21中,知道了函数对象上存在call和apply方法,那么是不是可以利用它们来让arguments也能够利用数组的方法呢: function callMethod(obj, method) { var shi