• js中arguments的应用


    Javascrip中的每个函数都会有一个Arguments对象实例arguments,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素。arguments.length为函数实参个数,arguments.callee引用函数自身。
     
    1)求给定的若干个值中的最大值
     1     function max(a,b){
     2         return a-b>0 ? a : b;
     3     }
     4     function Max(){
     5         var maxValue = arguments[0];
     6         for(var i=1; i<arguments.length; i++){
     7             if(maxValue < arguments[i]){
     8                 maxValue = arguments[i];
     9             }
    10         }
    11         return maxValue;
    12     }
    13     console.log(Max(1,2,0,-10,100,5)); // 100
     
    我们知道每一个对象都有自己的属性,arguments对象也不例外,首先arguments的访问犹如Array对象一样,用0到arguments.length-1来枚举每一个元素。下面我们来看看callee属性,返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。callee 属性是 arguments 对象的一个成员,仅当相关函数正在执行时才可用。callee 属性的初始值就是正被执行的 Function 对象,这允许匿名的递归函数。

    2)利用arguments.callee进行递归

    1     function factorial(n){
    2         if (n <= 0){
    3             return 1;
    4         } else{
    5             return n * arguments.callee(n-1);
    6         }
    7     }
    8     alert(factorial(5)); // 120
    需要注意的是:
    1.arguments是一个object对象,它不是数组,不能对它使用shift、push、join等方法。
    2.上述举例时用的arguments[i]中的i只是作为arguments对象的属性,并不能理解为数组下标。
     
    3.命名参数只提供便利,不是必须的;如果没有声明,可以用arguments[i]来访问数据。
    4.没有传递值的命名参数将自动赋予undefined。
  • 相关阅读:
    作业要求 20181009-9 每周例行报告
    20180925-1 每周例行报告
    作业要求20180925-4 单元测试,结对
    作业要求 20180925-3 效能分析
    作业要求 20180925-6 四则运算试题生成
    20180925-7 规格说明书-吉林市2日游
    20180925-5 代码规范,结对要求
    20170925-2 功能测试
    第二周例行报告
    作业要求 20180918-1 词频统计 卢帝同
  • 原文地址:https://www.cnblogs.com/xiayu25/p/6265814.html
Copyright © 2020-2023  润新知