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); } }
时间: 2024-10-16 23:47:23