zoukankan      html  css  js  c++  java
  • 【JavaScript】浅析JavaScript中arguments对象的使用

    arguments对象不能显式创建,arguments对象只有函数开始时才可用。函数的 arguments 对象并不是一个数组,访问单个参数的方式与访问数组元素的方式相同。索引 n 实际上是 arguments 对象的 0…n 属性的其中一个参数。

      下面的示例演示了 arguments 对象的用法,arguments对象和Function是分不开的。

    function ArgTest(a, b){
     2   var i, s = "The ArgTest function expected ";
     3   var numargs = arguments.length;     // 获取被传递参数的数值。
     4   var expargs = ArgTest.length;       // 获取期望参数的数值。
     5   if (expargs < 2)
     6      s += expargs + " argument. ";
     7   else
     8      s += expargs + " arguments. ";
     9   if (numargs < 2)
    10      s += numargs + " was passed.";
    11   else
    12      s += numargs + " were passed.";
    13   s += " "
    14   for (i =0 ; i < numargs; i++){      // 获取参数内容。
    15   s += "  Arg " + i + " = " + arguments[i] + " ";
    16   }
    17   return(s);                          // 返回参数列表。
    18}


      以上是arguments对象,由于和Function对象紧密地联系在一起。也就是说每一个函数都有自己的argument属性。下面我们来看看argument属性:为当前执行的 function 对象返回一个arguments 对象,function 参数是当前执行函数的名称,可以省略。

       通过 arguments 属性(相对于Function来说),函数可以处理可变数量的参数。arguments 对象的 length 属性包含了传递给函数的参数的数目。对于arguments 对象所包含的单个参数,其访问方法与数组中所包含的参数的访问方法相同。请看下面的例子:

    function ArgTest(){
     2   var i, s, numargs = arguments.length;
     3   s = numargs;  
     4   if (numargs < 2)
     5      s += " argument was passed to ArgTest. It was ";
     6   else
     7      s += " arguments were passed to ArgTest. They were " ;
     8   for (i = 0; i < numargs; i++)
     9      {
    10         s += arguments[i] + " ";
    11      }
    12   return(s);
    13}


       我们知道每一个对象都有自己的属性,arguments对象也不例外,首先arguments的访问犹如Array对象一样,用0到arguments.length-1来枚举每一个元素。下面我们来看看callee属性,返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。callee 属性是 arguments 对象的一个成员,仅当相关函数正在执行时才可用。callee 属性的初始值就是正被执行的 Function 对象,这允许匿名的递归函数。

    1function factorial(n){
    2  if (n <= 0)
    3  return 1;
    4  else
    5    return n * arguments.callee(n - 1)
    6}
    7print(factorial(3));

      到这里基本上把arguments对象给讲完了,不知还有其他的东西吗?其实很多东西我们都已经很熟悉了,除了上述的callee属性外,其他的我们都时不时在应用他们。

    原文链接:

    [js对象]JS入门之arguments对象

  • 相关阅读:
    扩展DigitalClock显示日期+时间
    利用Handler定时更新Android UI
    CheckBox在表格中全选、部分选和反选
    jQuery实现表格间隔色
    Android中对话框(dialog)的使用
    The connection to adb is down, and a severe error has occured.
    struts2类型转化
    Android开发之旅:环境搭建及HelloWorld
    C/C++浮点数在内存中的存储方式
    用标签写登录界面
  • 原文地址:https://www.cnblogs.com/HDK2016/p/6523445.html
Copyright © 2011-2022 走看看