arguments特性
**arguments **對(duì)象不能顯式創(chuàng)建础米, **arguments **對(duì)象只有函數(shù)開始時(shí)才可用。函數(shù)的 **arguments **對(duì)象并不是一個(gè)數(shù)組俊抵,訪問單個(gè)參數(shù)的方式與訪問數(shù)組元素的方式相同。索引 n 實(shí)際上是 ** arguments **對(duì)象的 0…n 屬性的其中一個(gè)參數(shù)谜诫。
在javascript中牵祟, **不需要明確指出參數(shù)名,就能訪問它們 **弱卡。如:
function hi(){
if(arguments[0]=="andy"){
return;
}
alert(arguments[0]);
}```
##(1)arguments的 length屬性##
**含義**
返回調(diào)用程序傳遞給函數(shù)的實(shí)際參數(shù)數(shù)目乃正。
**用法**
**[function.]arguments.length**
其中可選項(xiàng) function 參數(shù)是當(dāng)前正在執(zhí)行的 Function 對(duì)象的名稱。
**說明**
當(dāng) Function 對(duì)象開始執(zhí)行時(shí)婶博,腳本引擎將** arguments** 對(duì)象的** length **屬性初始化為傳遞給該函數(shù)的**實(shí)際參數(shù)數(shù)目**瓮具。
js不會(huì)主動(dòng)為你判斷你到底給函數(shù)傳了多少個(gè)參數(shù),如果你多傳了凡人,**多余的部分就沒有被使用**名党,**如果你少傳了,那么沒傳的參數(shù)值就是undefined**
所以我們可以借助**arguments**的length**屬性來檢測調(diào)用函數(shù)時(shí)是否使用了正確數(shù)目的實(shí)際參數(shù)**挠轴,因?yàn)閖avascript是不會(huì)為你做這些事的
##(2)arguments 的 0...n 屬性##
**含義**
返回一個(gè)** arguments** 對(duì)象中的各個(gè)參數(shù)的實(shí)際值传睹,相應(yīng)的值是由一個(gè)正在執(zhí)行的函數(shù)的** arguments**屬性返回的。
**用法
[function.]arguments[[0|1|2|...|n]]**
**參數(shù) **
function
可選項(xiàng)岸晦。當(dāng)前正在執(zhí)行的** Function **對(duì)象的名稱欧啤。
**0, 1, 2, …, n必選項(xiàng)**。0 到 n 范圍內(nèi)的非負(fù)整數(shù)启上,其中 0 代表第一個(gè)參數(shù)而 n 代表最后一個(gè)參數(shù)邢隧。最后參數(shù) n 的值為 arguments.length-1
**說明 **
0 . . . n 屬性所返回的值就是**傳遞給正在執(zhí)行的函數(shù)的實(shí)際值**。盡管實(shí)際上并不是一個(gè)參數(shù)數(shù)組冈在,您還是可以按照與訪問數(shù)組元素的方法相同的方式訪問組成 arguments 對(duì)象的各個(gè)參數(shù)府框。
**示例**
下面的例子演示了 arguments 對(duì)象的 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()));
##(3)arguments的callee屬性##
**含義**
**表示對(duì)函數(shù)對(duì)象本身的引用**,**也就是所指定的 Function 對(duì)象的正文**讥邻,這有利于實(shí)現(xiàn)無名函數(shù)的**遞歸**或者保證**函數(shù)的封裝性**迫靖。
**用法**
**[function.]arguments.callee**
可選項(xiàng) function 參數(shù)是當(dāng)前正在執(zhí)行的 Function 對(duì)象的名稱。
**說明**
**callee **屬性是** arguments** 對(duì)象的一個(gè)成員兴使,僅當(dāng)相關(guān)函數(shù)正在執(zhí)行時(shí)才可用系宜。
**callee** 屬性的初始值就是正被執(zhí)行的 Function 對(duì)象。這允許匿名的遞歸函數(shù)发魄。
**實(shí)例:**
用遞歸來計(jì)算1到n的自然數(shù)之和:
<script>
var sum=function(n){
if(1==n) {
return 1;
} else {
return n + arguments.callee(n-1);
}
}
alert(sum(100));
</script>```
轉(zhuǎn)自 http://www.reibang.com/p/ec235e689837