引用:http://www.cnblogs.com/lwbqqyumidi/archive/2012/12/03/2799833.html

     http://www.cnblogs.com/Fskjb/archive/2011/10/27/2227111.html

arguments对象的长度是由实参个数而不是形参个数决定的。形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠。对于arguments和值都存在的情况下,两者值是同步的,但是针对其中一个无值的情况下,对于此无值的情形值不会得以同步。如下代码可以得以验证。

<script>
function f(a, b, c) {
alert("a:" + a) // result: "1"
alert("b:" + b) // result: "2"
alert("c:" + c) // result: "undefined" alert("arg:" + arguments[0]); // result: "1"
alert("arg:" + arguments[1]); // result: "2"
alert("arg:" + arguments[2]); // result: "undefined" alert("length:"+arguments.length); // result: "2"
/*我修改a之后,arguments[0]跟着也变了*/
a = 100;
alert("arg:"+arguments[0]); // result: "100"
alert("a"+a) // result: "100"
/*我修改arguments[0]之后,a的值也跟着变了*/
arguments[0] = "qqyumidi";
alert("a:"+a); // result: "qqyumidi" /*但是修改c的值,argments[2]却没有改变*/
alert(c); // result: "undefined"
c = 2012;
alert("c:"+c) // result: "2012"
alert(arguments[2]); // result: "undefined"
} f(1, 2);
</script>

arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。

如下:

    <script>
function count(a) {
if (a == 1) {
return 1;
}
//alert(arguments.callee);
//如果把上面的注释去掉,那么alert出来的就是如下的注释内容
//function count(a) {
// if (a == 1) {
// return 1;
// }
// alert(arguments.callee);
// return a + arguments.callee(--a);
//}
return a + arguments.callee(--a);
} var mm = count(10);
alert(mm); //result: 55 </script>

有件事情我们需要注意下,在定义函数的时候,无论我们规定了参数的个数是几个。Javascript允许我们传递任何数量的参数到一个函数里,不管怎么定义这个函数。Arguments对象对这些都是允许的。比如下面,我们定义的参数个数是3个,但是我们传了5个也是可以的。

<script>
function f(a, b, c) {
alert("arg:" + arguments[0]); //result:1
alert("arg:" + arguments[1]); //result:2
alert("arg:" + arguments[2]); //result:3
alert("arg:" + arguments[3]); //result:4
alert("arg:" + arguments[4]); //result:5
} f(1, 2,3,4,5);
</script>

js:argument的更多相关文章

  1. js argument实参集合与局部变量、参数关系

    形参 形式上传递的参数 function fn1(a,b,c) {//a,b,c就是形参 实参 实际传递的参数 fn1 (1,2,5);//1,2,5就是实参 argument 定义: 实参的集合 用 ...

  2. 关于js 重载

    拜读js忍者修炼一书 读到关于js函数重载内容这个模块 主要是介绍通过js的访问argument这个参数来实现js函数的重载 通过在函数内部进行判断js argument参数的长度 代码如下所示 va ...

  3. 解决js(ajax)提交后端的“ _xsrf' argument missing from POST” 的错误

    首先先简述一下CSRF: CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思,也就是在用户会话下对某个CGI做一些GET/POST ...

  4. JS 不定函数参数argument的用法

    本篇文章只要是对js的隐含参数(arguments,callee,caller)使用方法进行了介绍. arguments arguments 该对象代表正在执行的函数和调用它的函数的参数. [func ...

  5. js对象属性名以数字开头如何获取、js属性名以数字开头、missing ) after argument list

    js对象中属性名以数字开头引发的报错 :missing ) after argument list var ChineseDistricts = { : { : '北京市', : '天津市', : ' ...

  6. JS异常missing ) after argument list

    JS异常报错 missing ) after argument list 在使用JS拼接DOM元素时,有这种情况发生,'<a onclick="del(' + data.id + ') ...

  7. 【问题记录】在执行js的时候报错:missing ) after argument list

    在执行个js语句时候报错: 报错语句: js('document.querySelector("[class] [tabindex='0']:nth-child(2) span") ...

  8. JS - caller,callee,call,apply [transfer] aA ==> apply uses an array [] as the second argument. call uses different argument.

    在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments Arguments : 该对象代表正在执行的函数和调用它的函数的参数. [function.]argument ...

  9. JS 在 IE9 中出现奇怪的错误(参数是必选项 argument not optional)

    最近发现之前运行正常的网站,在 IE9 下会报这个错误.网上查了一下,发现是跟我的方法名字有关... 我起了一个叫做 addFilter 名字的方法,但是很不巧,IE9 里也有一个这个名字的方法,所以 ...

随机推荐

  1. 关于5Gwifi

    但目前全球最快的WiFi传输速度仅为300Mbps(少数可以达到600Mbps),相当于每秒只能传输约36MB的内容.在人们只利用它来看网站.处理邮件的年代,这没什么问题.但到了今天,面对越来越复杂的 ...

  2. [暑假集训--数论]poj2034 Anti-prime Sequences

    Given a sequence of consecutive integers n,n+1,n+2,...,m, an anti-prime sequence is a rearrangement ...

  3. 【09】react 之 表单组件

    不太清楚有多少初学React的同学和博主当时一样,在看完React的生命周期.数据流之后觉得已经上手了,甩开文档啪啪啪的开始敲了起来.结果...居然被一个input标签给教做人了. 故事是这样的:首先 ...

  4. 2017-2018-2 20179204 PYTHON黑帽子 黑客与渗透测试编程之道

    python代码见码云:20179204_gege 参考博客Python黑帽子--黑客与渗透测试编程之道.关于<Python黑帽子:黑客与渗透测试编程之道>的学习笔记 第2章 网络基础 t ...

  5. Linux中的小括号和大括号,${}/$()/()/{}/${var:-string}/${var:=string}/${var:+string}/${var:?string}/${var%pattern}/${var#pattern}/${var%%pattern}/${var##pattern}

    简单记录一下大小括号在Linux中的用处. 1.${var},这是Linux中变量的原形.所以$var,别忘记了你的本来面目. # a= # echo $a # echo ${a} # echo ${ ...

  6. Bzoj3227 [Sdoi2008]红黑树(tree)

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 204  Solved: 125 Description 红黑树是一类特殊的二叉搜索树,其中每个结点被染 ...

  7. 怎样在SQL2005中设置 自增长类型?

    原文发布时间为:2009-04-25 -- 来源于本人的百度文章 [由搬家工具导入] 最近好几个人问我。。。。。 企业管理器-->右键你的表-->设计表-->选中一int类型字段-- ...

  8. DataBinder.Eval值的判断

    原文发布时间为:2009-04-10 -- 来源于本人的百度文章 [由搬家工具导入] 问:如何对<%# DataBinder.Eval(Container.DataItem,"Ly_R ...

  9. PE笔记之DOS头

    IMAGE_DOS_HEADER STRUCT { +0h WORD e_magic    // Magic DOS signature MZ(4Dh 5Ah)     DOS可执行文件标记 +2h ...

  10. hdu 4786(生成树)

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...