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

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

  • 相关阅读:
    树莓派服务器搭建
    设计模式之装饰者模式
    设计模式之建造者模式
    Java IO
    设计模式之抽象工厂模式
    常用排序算法(堆排序)
    Struts2框架简介和示例
    静态代理和利用反射形成的动态代理(JDK动态代理)
    常用排序算法(插入排序,快速排序,归并排序,堆排序)
    设计模式之简单工厂和工厂方法模式
  • 原文地址:https://www.cnblogs.com/lanshu123/p/10566724.html
Copyright © 2011-2022 走看看