函數的實際參數:Arguments對象

在一個函數體內,標識符arguments具有特殊含義。它是調用對象的一個特殊屬性,用來引用Arguments對象。Arguments像數組,但並非是數組,將它看作偶然具有了一些帶編碼的屬性的對象更合適。當函數具有命名了的參數時,Arguments對象的數組元素是存放函數參數的局部變量的同義詞。arguments[]數組和命名了的參數不過是引用同一變量的不同方法。用參數名改變一個參數的值時同時會改變argument[]數組獲得的值,通過arguments[]數組改變參數的值時也會改變用參數名獲得的參數值。例如:

function test(x)
{
  alert(x);  //顯示參數的初始值
  arguments[0] = null;  //改變數組元素也會改變x
  alert(x);  //現在顯示"null"
}

除了數組元素,Arguments對象還定義了callee屬性,用來引用當前正在執行的函數。這對未命名的函數調用自身非常有用。下面是一個未命名的函數直接量,用來計算階層。

var calc = function(x) {
  if(x<=1) return 1;
  return x*arguments.callee(x-1);
}
alert(calc(3));  //顯示6

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章