JS的arguments对象
来源:互联网 发布:大数据开发工程师待遇 编辑:程序博客网 时间:2024/05/01 22:04
js进行函数调用时,除了指定的参数外,还创建一个隐含的对象——arguments。
一、arguments可以用arguments[index]这样的语法取值,拥有长度属性length。arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表,例如:
<script> function func(a,b){ alert(a); alert(b); for(var i=0;i<arguments.length;i++){ alert(arguments[i]); } } func(1,2,3,4); </script>
代码运行时会依次显示:1,2,1,2,3,4。函数定义了两个参数,但是在调用的时候传递了4个参数。
二、arguments的callee属性
它表示对函数对象本身的引用,这有利于实现无名函数的递归或者保证函数的封装性。例如:用递归来计算1到n的自然数之和:
<script> var sum=function(n){ if(1==n) { return 1; } else { return n + arguments.callee(n-1); } } alert(sum(100));</script>
function hi(){if(arguments[0]=="andy"){ return;}alert(arguments[0]);}
用arguments[0]可以访问第一个参数,如此类推。
利用arguments对象可以实现重载,利用arguments.length可以获取函数的参数个数,如下:
function hi(){if(arguments.length==1){ alert(arguments[0]);}else if(arguments.length==2){ alert(arguments[0] + arguments[1]);}}
length 属性 (arguments)
返回调用程序传递给函数的实际参数数目。
[function.]arguments.length
可选项 function 参数是当前正在执行的 Function 对象的名称。
说明
当 Function 对象开始执行时,脚本引擎将 arguments 对象的 length 属性初始化为传递给该函数的实际参数数目。
示例
下面的例子演示了 arguments 对象的 length 属性的用法。要完全理解示例,请向该函数传递更多的参数:
function ArgTest(a, b){ var i, s = "The ArgTest function expected "; var numargs = arguments.length; var expargs = ArgTest.length; if (expargs < 2) s += expargs + " argument. "; else s += expargs + " arguments. "; if (numargs < 2) s += numargs + " was passed."; else s += numargs + " were passed."; return(s);}
arguments 属性为当前执行的 function 对象返回一个arguments 对象。function.argumentsfunction 参数是当前执行函数的名称,可以省略。说明通过 arguments 属性,函数可以处理可变数量的参数。 arguments 对象的 length 属性包含了传递给函数的参数的数目。对于arguments 对象所包含的单个参数,其访问方法与数组中所包含的参数的访问方法相同。示例下面的例子说明了 arguments 属性的用法:
function ArgTest(){ var i, s, numargs = arguments.length; s = numargs; if (numargs < 2) s += " argument was passed to ArgTest. It was "; else s += " arguments were passed to ArgTest. They were " ; for (i = 0; i < numargs; i++) { s += arguments[i] + " "; } return(s);}
0...n 属性返回一个 arguments 对象中的各个参数的实际值,相应的值是由一个正在执行的函数的 arguments 属性返回的。[function.]arguments[[0|1|2|...|n]]参数function可选项。当前正在执行的 Function 对象的名称。0, 1, 2, …, n必选项。0 到 n 范围内的非负整数,其中 0 代表第一个参数而 n 代表最后一个参数。最后参数 n 的值为 arguments.length-1。说明0 . . . n 属性所返回的值就是传递给正在执行的函数的实际值。尽管实际上并不是一个参数数组,您还是可以按照与访问数组元素的方法相同的方式访问组成 arguments 对象的各个参数。示例下面的例子演示了 arguments 对象的 0 . . . n 属性的用法。要完全理解以下例子,请向该函数传递一个或多个参数:
function ArgTest(){ var s = ""; s += "The individual arguments are: " for (n=0; n< arguments.length; n++){ s += ArgTest.arguments[n]; s += " "; } return(s);}print(ArgTest(1, 2, "hello", new Date()));
callee 属性返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。[function.]arguments.callee可选项 function 参数是当前正在执行的 Function 对象的名称。说明callee 属性是 arguments 对象的一个成员,仅当相关函数正在执行时才可用。callee 属性的初始值就是正被执行的 Function 对象。这允许匿名的递归函数。示例
function factorial(n){ if (n <= 0) return 1; else return n * arguments.callee(n - 1)}print(factorial(3));
arguments用来获取参数数量和值
function Button1_onclick(a,b,c,d) { alert(arguments.length)//实际传入的数量 alert(arguments.callee.length);//本身函数的数量 alert(arguments[1])//实际传入的第2个值 值从0开始 }
callee:
返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
alert(arguments.callee); 可以打印函数本身
alert(arguments.callee.length);//本身函数的数量
举个例子
function JSDemo(arg1, arg2) { if (arguments.length==arguments.callee.length) { window.alert("验证形参和实参长度正确!"); return; } else { alert("实参长度:" +arguments.length); alert("形参长度: " +arguments.callee.length); } }
- JS的arguments对象
- js 的 arguments 对象
- js的arguments对象
- js arguments对象的用法
- js arguments对象的简单理解
- js中的arguments对象的使用
- js-----arguments一个特别的对象
- js arguments对象
- js arguments对象说明
- js arguments对象
- js arguments对象
- JS arguments 对象
- js arguments对象
- JS Arguments对象
- js中的arguments对象
- js-arguments对象
- js arguments对象
- js arguments对象
- vc_class static 一系列的问题和解决方法
- tocmat中jsp热部署实现原理
- stunserver服务器的安装(ubuntu12.10)
- 关于chrome,firefox中img.width=0,img.height=0的解决方法
- STL中的set::iterator为const_iterator
- JS的arguments对象
- Leftmost Digit(数论)
- PHP使用多进程解决办法处理大数据/内存泄漏
- CVSListBox类的扩展使用
- CXF SSL HTTPS
- think in java 读书笔记
- 内存调试的东西D/dalvikvm( 809 ): GC_CONCURRENT freed
- 使用Spread.Net如何将文本自定义为形状
- 花生壳 路由器配置