一、非數組,但有數組的特性數組
不是一個真正的數組,不能夠使用數組的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代替函數名自己。對象