Arguments

 

一、非數組,但有數組的特性數組

不是一個真正的數組,不能夠使用數組的push\pop方法等,可是能夠經過數組形式獲取各個參數。能夠經過轉換成爲真正的數函數

 

var args = Array.prototype.slice.call(arguments); //轉換成真的數組 能夠使用push pop等方法

 

二、Arguments對象有一個非同尋常的特性.spa

當函數具備命名了的參數時, Arguments對象的數組元素是存放函數參數的局部變量的同義詞. arguments[]數組和命名了的參數不過是引用同一變量的兩種不一樣方法. 用參數名改變一個參數的值同時會改變經過arguments[]數組得到的值. 經過arguments[]數組改變參數的值也會相應的改變用參數名獲取的參數值。prototype

function b(x, y, a) { console.log(arguments);
arguments[2] = 10; 
alert(a);  //10
console.log(arguments);
}
b(1, 2, 3);  


function bb(x, y, a) { 
a = 10;
alert(arguments[2] );  //10
}
bb(1,2,3);
function f(a, b,c){
   alert(arguments.length);   // result: "2"
    a = 100;
    alert(arguments[0]);       // result: "100"
    arguments[0] = "qqyumidi";
    alert(a);                  // result: "qqyumidi"
    alert(c);                  // result: "undefined"
    c = 2012;                  //c這裏是形參中的變量 不可做爲全局變量
    alert(arguments[2]);       // result: "undefined"
}

f(1, 2);
alert(c);  //c in not defined

 三、arguments.callee指向函數自身code

arguments.callee返回此arguments對象所在的當前函數引用。在使用函數遞歸調用時推薦使用arguments.callee代替函數名自己。對象

相關文章
相關標籤/搜索