zoukankan      html  css  js  c++  java
  • 使用 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

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

  • 相关阅读:
    STM32使用之GPIO
    STM32时钟分析
    stm32 rcc 时钟
    LCD与FSMC的连接原理
    经典算法题随机从连续的100个不重复数中取出100个不重复随机数
    所有win7机器都必须要做的一个优化!作用:让系统流畅,减少卡顿
    WebService返回自定义对象遇到的错误
    获取浏览器信息
    60行代码的俄罗斯方块
    SVN常用命令
  • 原文地址:https://www.cnblogs.com/lanshu123/p/10566724.html
Copyright © 2011-2022 走看看