JavaScript函数中的参数(arguments)
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 []