本文并无干货,只是让自己加深对这些基础知识的了解
在es6前我们是这样给方法定义默认参数的
function fun(x, y) {
y = y || true;
}复制代码
但是这样做会有一个弊端,假如我们第二个参数为false或者为空字符串则y就会等于true。所以还得判断一下
function fun(x, y) {
if(typeof y === 'undefined'){
y = true
}
}复制代码
在es6中是这样处理默认值的
function fun(x, y=true) {
}复制代码
很明显这样更简洁,而且可以让代码变得更清晰,让阅读代码的人知道哪些参数是可以省略的。
参数默认值可以与解构赋值的默认值,结合起来使用。
function a({x, y = true}) {
console.log(x, y);
}
a({}) //undefined true
a({y:false}) //undefined false复制代码
如果调用函数a时没有传任何参数就会报错,因此我们可以给它指定默认参数
function a({x, y = true} = {}) {
console.log(x, y);
}
foo() // undefined true复制代码
通常情况下,定义了默认值的参数,应该放在靠后的位置。举个例子
function a(x=0,y){
console.log(x,y)
}
a(4)//4,undefined
a(undefined,1)//0,1复制代码
上面的代码默认值的参数没有放在后面。我们可以发现无法省略该参数,除非传undefined
。