解构赋值与默认值结合使用
1.
function foo({x, y = 5}) {
console.log(x, y)
}
foo({})
foo({x: 1})
foo({x: 1, y: 2})
foo({y: 3})
foo()
/** output
undefined 5
1 5
1 2
undefined 3
TypeError: Cannot destructure property `x` of 'undefined' or 'null'.
**/先解构,再赋值,所以当没有传入对象时,会报错
function foo_2({x, y = 5} = {}) {
console.log(x, y)
}
foo_2()
// undefined 52.
3. 看个有趣的例子
上面两种写法都对函数的参数设定了默认值,区别是写法一函数参数的默认值是空对象,但是设置了对象解构赋值的默认值;写法二函数参数的默认值是一个有具体属性的对象,但是没有设置对象解构赋值的默认值。
下面是调用情况:
Last updated
Was this helpful?