解构默认值+参数默认值 的区别
程序员文章站
2024-02-20 19:32:46
...
function f6({ x = 10 } = {}, { y } = { y: 10 }) { console.log( x, y ); }
f6(); // 10 10
f6( undefined, undefined ); // 10 10
f6( {}, undefined ); // 10 10
f6( {}, {} ); // 10 undefined
f6( undefined, {} ); // 10 undefined
f6( { x: 2 }, { y: 3 } ); // 2 3
上面的例子中 函数参数默认值的 { y: 10 } 值是一个对象,而不是 解构默认值。因此,它只在第二参数没有传入,或者传入 undefined 的时候才会生效。
传入了第二个参数 ({}),所以没有使用默认值 { y: 10 },而是在传入的空对象值 {} 上进行 { y } 解构。
{ x = 10 } 是解构默认值,传入undefined,使用{}进行解构,传入{},使用新的{}进行解构:{x:undefined}