js 的arguments的一些理解資料

初學js的時候,對arguments這個東西常見,就是搞不清他的意思~ 下面是我找到的一些資料和個人理解,終於弄懂了這個傢伙javascript

    首先arguments指向實參對象java

  在函數體內,標識符arguments是指向實參對象的引用,實參對象是一個類數組對象 arguments[0],arguments.length,類數組不是數組,雖然也有數組的前面這兩種屬性,具體判斷可使用instanceof來判斷一下數組

instanceof 用於判斷一個實例是不是某種類型
在 typeof 方法返回 「object」 的狀況下,instanceof 方法仍是頗有用的。

arrayLike instanceof Array

 

 // false
其值是布爾值那麼問題來了

arguments是什麼?
1.  arguments是收到的實參副本
  在詞法分析中, 首先按形參造成AO的屬性,值爲undefined
  當實參傳來時, 再修改AO的相應屬性.
2:並把全部收到實參收集起來,放到一個arguments對象裏
  function t(a,b,c){},
  調用時: t(1,2,3,4,5) 5個參數,這裏傳入了5個參數
  此時 , AO屬性只有a,bc,3個屬性, 可是arguments裏有1,2,3,4,5, 全部的值,這個arguments就用來存儲傳入的全部參數

  對於超出形參個數以外的實參, 能夠經過arguments來得到
3.   arguments 的索引 從 0, 1,2,....遞增,與實參逐個對應
4.  arguments.length 屬性表明實參的個數
5.  arguments必定不是數組, 是長的比較像數組的一個對象,雖然也有length屬性
  6:arguments每一個函數都會有,所以,arguemnts只會在內部找自身的arguments,
  沒法引用到外層的arguments
 函數

 1  <script type="text/javascript">
 2   // 求圓形面積,矩形面積, 三角形面積
 3   function area () {
 4   if(arguments.length == 1) {
 5   alert(3.14 * arguments[0] * arguments[0]);
 6   } else if(arguments.length == 2) {
 7   alert(arguments[0] * arguments[1]);
 8   } else if(arguments.length == 3) {
 9   alert(arguments[0] + arguments[1] + arguments[2]);
10   } else {
11   return null;
12   }
13   }
14   area(10,20,30);
15   
16   </script>

 

下面是W3C上的一些解釋spa

arguments 對象設計

在函數代碼中,使用特殊對象 arguments,開發者無需明確指出參數名,就能訪問它們。code

例如,在函數 sayHi() 中,第一個參數是 message。用 arguments[0] 也能夠訪問這個值,即第一個參數的值(第一個參數位於位置 0,第二個參數位於位置 1,依此類推)。對象

所以,無需明確命名參數,就能夠重寫函數:blog

function sayHi() {索引

  if (arguments[0] == "bye") {

    return;

  }

 

  alert(arguments[0]);

}

檢測參數個數

還能夠用 arguments 對象檢測函數的參數個數,引用屬性 arguments.length 便可。

下面的代碼將輸出每次調用函數使用的參數個數:

 1 function howManyArgs() {
 2 
 3   alert(arguments.length);
 4 
 5 }
 6 
 7  
 8 
 9 howManyArgs("string", 45);
10 
11 howManyArgs();
12 
13 howManyArgs(12);

 

上面這段代碼將依次顯示 "2"、"0" 和 "1"。

註釋:與其餘程序設計語言不一樣,ECMAScript 不會驗證傳遞給函數的參數個數是否等於函數定義的參數個數。開發者定義的函數均可以接受任意個數的參數(根據 Netscape 的文檔,最多可接受 255 個),而不會引起任何錯誤。任何遺漏的參數都會以 undefined 傳遞給函數,多餘的函數將忽略。

相關文章
相關標籤/搜索