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

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

使用 arguments 对象的更多相关文章

  1. arguments 对象的老历史

    引题:为什么 JavaScript 中的 arguments 对象不是数组 http://www.zhihu.com/question/50803453 JavaScript 1.0 1995 年, ...

  2. arguments 对象

    在函数体内,标识符arguments是指向实参对象的引用,实参对象是一个类数组对象 arguments[0],arguments.length arguments是什么? 答:1:arguments是 ...

  3. javascript中的arguments对象

    在js中一切都是对象,连函数也是对象,函数名其实是引用函数定义对象的变量. 1.什么是arguments? 这个函数体内的arguments非常特殊,实际上是所在函数的一个内置类数组对象,可以用数组的 ...

  4. 永远不要修改arguments对象

    案例复现 var obj = { plus: function(arg0, arg1) { return arg0 + arg1; } }; function callMethod(context, ...

  5. [Effective JavaScript 笔记]第23条:永远不要修改arguments对象

    arguments对象并不是标准的Array类型的实例.arguments对象不能直接调用Array方法. arguments对象的救星call方法 使得arguments可以品尝到数组方法的美味,知 ...

  6. [Effective JavaScript 笔记]第24条:使用变量保存arguments对象

    迭代器(iterator)是一个可以顺序存取数据集合的对象.其一个典型的API是next方法.该方法获得序列中的下一个值. 迭代器示例 题目:希望编写一个便利的函数,它可以接收任意数量的参数,并为这些 ...

  7. 理解Javascript参数中的arguments对象

    ECMAScript中函数没有标签名的特性,所以ECMAScript函数中没有重载. Javascript中arguments的存在可以弥补javascript中函数没有重载的不足. Javascri ...

  8. 关于arguments对象以及函数的柯里化;

    1.arguments对象 Arguments是个类似数组但不是数组的对象,说他类似数组是因为其具备数组相同的访问性质及方式,能够由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性 ...

  9. JavaScript之arguments对象讲解

    javascript的arguments对象类似于PHP的extract()函数实现. 在不确定函数参数个数的情况下,可以通过arguments访问参数,并以索引0为起始. function sayH ...

  10. JavaScript对象(正则表达式,Date对象,function对象 arguments对象)

    好用的技术教程:http://www.w3school.com.cn/index.html 1:正则表达式 正则表达式通常用于验证表单 定义语法为 / / 2:Date对象 var now = new ...

随机推荐

  1. 为什么volatile能保证有序性不能保证原子性

    对于内存模型的三大特性:有序性.原子性.可见性. 大家都知道volatile能保证可见性和有序性但是不能保证原子性,但是为什么呢? 一.原子性.有序性.可见性 1.原子性: (1)原子的意思代表着-- ...

  2. &和nohup

    目录 一.简介 二.& 三.nohup 一.简介 当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件.对于密集访问磁盘的进程,我 ...

  3. Android: Client-Server communication by JSON

    Refer to: http://osamashabrez.com/client-server-communication-android-json/ This is a sequel to my l ...

  4. [BUUCTF]PWN9——ciscn_2019_en_2

    [BUUCTF]PWN9--ciscn_2019_en_2 题目网址:https://buuoj.cn/challenges#ciscn_2019_en_2 步骤: 例行检查,64位,开启了NX保护 ...

  5. 工作簿拆分(Excel代码集团)

    一个工作簿中包括N个工作表,将各个工作表拆分成工作簿. 工作表数量不定,表内内容不限,拆分后保存于当前文件夹内. Sub Sample() Dim MySheetsCount As Long For ...

  6. SP16033 TIPTOP - Tip Top Game 题解

    Description Alim 和 Sufian 是好朋友.他们最近找到了一个好玩的游戏,叫做 Tip Top.游戏规则如下: 确定一个整数. 找出这个整数的所有因子. Alim 先手,每人轮流取一 ...

  7. python2升级到python3 yum不可用解决方案

    /usr/libexec/urlgrabber-ext-down /usr/bin/yum 这两个文件解释器 写 /usr/bin/python2

  8. IDEA设置maven打包的时候跳过单元测试

    pom增加插件 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>mav ...

  9. soundcloud to mp3

    关于 本文将介绍一个在线网站,将songs 下载为mp3格式 注意, 大陆需要梯子. 没有?soundcloud无法打开 准备 soundcloud to mp3 一个来自soundcloud的歌曲链 ...

  10. 【LeetCode】942. DI String Match 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...