EECMAscript 2015 当中为函数的形参列表扩展了一些非常有用的新语法,首先是参数的默认值。参数默认值的定义是在没有去传递实际参数时就是在缺省状态所使用的一个值,没有传实参得到就应该是 undefined,以前想要为函数中的参数去定义默认值,需要在函数体中通过逻辑代码来实现。
function foo (enable) {
// 很多人喜欢在这里使用短路运算的方式 enable = enable || true,添加默认值
// 但这里这种情况下是不能使用短路运算的,
// 这样会导致传入 false 时也会等到 true,
// 正确的做法是判断 enable 是否等于 undefined。
enable = enable === undefined ? true : enable;
console.log('foo invoked ~ enable:', enable);
}
foo(true)
有了参数默认值这样的新功能过后这一切就会变得简单的多,这样就可以在形参的后面通过等号去设置一个默认值就可以了。
function foo (enable = true) {
console.log('foo invoked ~ enable:', enable);
}
foo()
要注意的一点就是,如果有多个形参带默认值的形参一定要在参数列表的最后面,因为参数是按照次序传入的,如果说带有默认值的这种参数不再最后的话,默认值将无法正常工作。