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 []