传统写法

function fn(param) {
    let p = param || 'hello';
    console.log(p);
}

上方代码中,函数体内的写法是:如果 param 不存在,就用 hello字符串做兜底。这样写比较啰嗦。

ES6 写法:(参数默认值的写法,很简洁)

function fn(param = 'hello') {
    console.log(param);
}

在 ES6 中定义方法时,我们可以给方法里的参数加一个默认值(缺省值):

  • 方法被调用时,如果没有给参数赋值,那就是用默认值;
  • 方法被调用时,如果给参数赋值了新的值,那就用新的值。

如下:

var fn2 = (a, b = 5) => {
    console.log('haha');
    return a + b;
};
console.log(fn2(1)); //第二个参数使用默认值 5。输出结果:6

console.log(fn2(1, 8)); //输出结果:9

提醒 1

我们来看下面这段代码:

let x = 'smyh';
function fn(x, y = x) {
    console.log(x, y);
}
fn('vae');

注意第二行代码,我们给 y 赋值为x,这里的x是括号里的第一个参数,并不是第一行代码里定义的x。打印结果:vae vae

如果我把第一个参数改一下,改成:

let x = 'smyh';
function fn(z, y = x) {
    console.log(z, y);
}
fn('vae');

此时打印结果是:vae smyh

let fn2 = (a, b = 5, c) => {
  console.log(a, b, c)
  console.log(a + b + c)
};

fn2(1, 5)

fn2(1, 8)

//1 5 undefined
//NaN
//1 8 undefined
//NaN