關於 'arguments' 變數搭配 rest parameters 的問題
前言
'arguments' 變數搭配 rest parameters 時, arguments.length 會如何變化?在此把學習的過程做個紀錄。內容
範例如下
function call( ...arg ){
console.log( arguments.length);
}
//
function callMultiArg( a , b , ...arg ){
console.log( arguments.length);
}
//
call();//0
call( 1 );//1
call( 1 , 2 );//2
call( 1 , 2 , 3 );//3
//
callMultiArg();//0
callMultiArg( 1 );//1
callMultiArg( 1 , 2 );//2
callMultiArg( 1 , 2 , 3 );//3
callMultiArg( 1 , 2 , 3 , 4 );//4
在 call() 的使用範例可以看到,雖然 arg 只是一個變數,但 arguments.length 會隨著傳入的數量改變,接著看 callMultiArg() 的使用範例,一樣的問題, arg 一樣不會被只視為一個變數,也就是說 rest parameters 雖然讓變數濃縮報一個陣列裡,但對 arguments.length 而言還是會依據傳入的數量來決定數值。
參考資料
[ developer.mozilla.org ] Rest parameters
沒有留言:
張貼留言