arguments
argument是JavaScript中的一個關鍵字,用於指向調用者傳入的所有參數。
function example(x){ alert(x); //1 alert(arguments.length); //3 for(var i=0; i<arguments.length; i++){ alert(arguments[i]); //1,2,3 } } example(1,2,3);
即使不定義參數,也可以取到調用者的參數。
function abs() { if (arguments.length === 0) { return 0; } var x = arguments[0]; return x >= 0 ? x : -x; } abs(); // 0 abs(10); // 10 abs(-9); // 9
REST
由於JavaScript函數允許接收任意個參數,所以不得不用arguments來獲取函數定義a以外的參數。
function exm(a) { var rest = []; if (arguments.length > 1) { for (var i = 1; i<arguments.length; i++) { rest.push(arguments[i]); } } }
其實ES6給了新的rest參數,用在函數最后,多余的參數以數組的形式交給變量rest,如果傳入的參數未填滿函數定義的參數,rest會是一個空數組。
function exm(a, b, ...rest) { console.log('a = ' + a); console.log('b = ' + b); console.log(rest); } exm(1, 2, 3, 4, 5); // 結果: // a = 1 // b = 2 // Array [ 3, 4, 5 ] exm(1); // 結果: // a = 1 // b = undefined // Array []