Javascript变长参数和默认参数

/* javascript 变长参数
 * 实参少于形参: 剩下的参数如果没有默认值,将解析为undefined
 * 实参多于形参: 剩下的实参可以通过 "实参对象"-arguments 来获取
 *         - 实参对象是对象, 但是有数组的特性, 类数组
 *         - arguments 保存的是所有参数,如 arguments[0]表示的是第一个实参,length属性得到实参个数
 *         - 按照这个对象,那么函数可以根本不用参数, 不过有参数可以减少变量的声明并使代码更清晰
 */
function sum(){
    var sum = 0;
    for(var i=0;i<arguments.length;++i)
        sum += arguments[i];
    return sum;
}
console.log(sum(2,1,3,4)); //10
//默认参数
/*--Method 1--*/
function defaultParam1(first, second){
    var first = first ? first : 1; // 设置默认值
    var second = second ? second : 2;
    return first+second;
}
/*--Method 2--*/
function defaultParam2(){
    var first = arguments[0] ? arguments[0] : 1; // 设置默认值
    var second = arguments[1] ? arguments[1] : 2;
    return first+second;
}
/*--Method 3--*/
function defaultParam3(first, second){
    first = first || 1;
    second = second || 2;
    return first+second;
}

默认参数还有直接在函数形参后面直接加默认值的方法, 与C++类似. 详细信息参考: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Default_parameters

原文地址:https://www.cnblogs.com/roger9567/p/5039035.html