關於 'arguments' 變數被超出範圍賦值
前言
在之前的 關於修改 'arguments' 變數 提及可以修改 'arguments' 變數,既然 'arguments' 變數可以被賦值,如果超出範圍賦值會發生什麼事?在此把學習的過程做個紀錄。
內容
範例如下
function call(){
arguments[ 0 ] = 100;
console.log( arguments.length );//0
console.log( arguments[ 0 ] );//100
}
call();
'arguments' 變數是以陣列的形式來存放,範例喚起時沒有傳入引數,所以對 'arguments' 變數賦值明顯是超出範圍的,接著用 arguments.length 來取得陣列的大小,會改變陣列大小嗎?結果是沒有!但是如果再度取得開始的賦值又會發現該賦值是有效的,所以 'arguments' 變數的陣列是特別的,就算陣列的大小改變了, arguments.length 還是保存著引數被傳入的數量。
參考資料
[ developer.mozilla.org ] The arguments object
沒有留言:
張貼留言