1. 逻辑或( || )实现默认值
在es6之前,逻辑或可以做到函数的参数设置默认值:
function showName(name) {
var n = name || 'Tom';
console.log(n);
}
showName();//Tom
showName('Jary');//Jary
逻辑或具有一个隐藏的特性,它能够找到第一个真值表达式(即不为false)并返回它
var name = null || 'Tom' || undefined;//此时 name 为 Tom
2. es6中的函数参数默认值
es6中,可以将默认值直接赋给参数来实现:
function add(x = 2, y = 3) {
return x + y;
}
add();//5
当使用上面的函数时,只对x即第一个参数赋新的值,而y使用默认值时,可以这么写:
add(5);//8
当只对y赋新的值,x采用默认值时,必须要对x写"undefined":
add( , 5);//Error: Unexpected token ,
add(undefined, 5);//7
同样的对更多个参数的函数,只要赋新值的参数不是第一个,之前的采用默认值必须要写"undefined",而如果不是最后一个,后面的参数采用默认值则也可以省略,前面的却不能:
fun(undefined, undefined, ... 5);
而且不能用null替代undefined:
add(null , 5);//5 此时null为0
总结起来就是:默认值即对参数赋值,不是第一个参数赋新值前面的参数保留默认值写undefined,后面的保留默认值可省略
3. 补充:逻辑与( && )
与逻辑或相对应,逻辑与也有一个特性:它可以找到第一个虚值表达式并返回,或者都为真值表达式,则返回最后一个真值表达式:
var x = false && 5 && null;//x = false
var y = 5 && true && 'Tom';//y = 'Tom'