传统写法:
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