欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解构默认值+参数默认值 的区别

程序员文章站 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}