码迷,mamicode.com
首页 > 其他好文 > 详细

内置对象 arguments 的分析与使用

时间:2016-01-12 15:36:04      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

W3C 中说明:

  ECMAScript arguments 对象

    可访问当前函数的参数,而无需指出参数名

  

  区别于其他程序设计语言,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数

    开发者定义的函数可以接受任意个数的参数(根据 NetScape 文档,最多可接受255个),而不会引发任何错误

      任何遗漏的参数将以 undefined 传递给函数

 

  可以模拟函数重载,如

  function doAdd() {
      if(arguments.length == 1) {
          alert(arguments[0]);
      } else if(arguments.length == 2) {
          alert(arguments[0] + arguments[1]);
      }
  }

 

arguments 是当前函数的内置属性,可以直接调用 arguments 而不需要写成 func.arguments

1、它的存储非常类似 Array,但不是 Array 的实例

2、arguments 对象的长度只由实参个数决定

  形参是在函数内部重新开辟内存空间存储,与 arguments 对象内存空间并不重叠

    对于值都存在的情况下,他们两者的值是同步的

3、JavaScript 函数是不能重载的

  1)函数声明没有返回值类型一说

  2) 形参个数严格意义上只是为了方便函数中的变量操作,实际上实参已经存储在 arguments 对象中

  3)函数其实也是对象,函数名只是关于函数的引用

  因此,通过 arguments 实现的只是重载的模拟

4、重要属性 callee

  返回此 arguments 对象所在的当前函数的引用

  应用:递归调用,如

function count(a) {
  if(a == 1) {
    return 1;
  } else {
    return a + arguments.callee(--a);
  }
}

 

内置对象 arguments 的分析与使用

标签:

原文地址:http://www.cnblogs.com/JustBeZero/p/5124194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!