js中arguments的用法

本文導讀:Javascript並無重載函數的功能,可是Arguments對象可以模擬重載。Javascrip中國每一個函數都會有一個Arguments對象實例arguments,它引用着函數的實參,能夠用數組下標的方式"[]"引用arguments的元素。arguments.length爲函數實參個數,arguments.callee引用函數自身。javascript

 

arguments特性java

arguments對象不能顯式建立,arguments對象只有函數開始時纔可用。函數的 arguments 對象並非一個數組,訪問單個參數的方式與訪問數組元素的方式相同。索引 n 其實是 arguments 對象的 0…n 屬性的其中一個參數。
 數組

在javascript中,不須要明確指出參數名,就能訪問它們。如:
 函數

function hi(){
if(arguments[0]=="andy"){
     return;
}
alert(arguments[0]);
}
hi();

arguments的
length屬性

含義spa

返回調用程序傳遞給函數的實際參數數目。code

用法對象

[function.]arguments.lengthblog

其中可選項 function 參數是當前正在執行的 Function 對象的名稱。遞歸

說明索引

當 Function 對象開始執行時,腳本引擎將 arguments 對象的 length 屬性初始化爲傳遞給該函數的實際參數數目。

js不會主動爲你判斷你到底給函數傳了多少個參數,若是你多傳了,多餘的部分就沒有被使用,若是你少傳了,那麼沒傳的參數值就是undefined


因此咱們能夠藉助arguments的length屬性來檢測調用函數時是否使用了正確數目的實際參數,由於javascript是不會爲你作這些事的


arguments 的 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()));

 

arguments的callee屬性

含義

表示對函數對象自己的引用,也就是所指定的 Function 對象的正文,這有利於實現無名函數的遞歸或者保證函數的封裝性。

用法

[function.]arguments.callee

可選項 function 參數是當前正在執行的 Function 對象的名稱。

說明

callee 屬性是 arguments 對象的一個成員,僅當相關函數正在執行時纔可用。

callee 屬性的初始值就是正被執行的 Function 對象。這容許匿名的遞歸函數。

實例:

用遞歸來計算1到n的天然數之和:

<script>

   var sum=function(n){
    if(1==n) {
       return 1;
    } else {
       return n + arguments.callee(n-1);
     }
  }
  alert(sum(100));
</script>

 

相關文章
相關標籤/搜索