我想了一会儿,但似乎我无法按照我希望的方式完成这项工作。实际上,我想要的只是为可选参数嵌套默认值。
我想看到的输出应该是:

55, 44, { sub1: '0', sub2: 55, sub3: 'all'}

相反,我只是得到这个:
55, 44, { sub2: 55 }

有人可以给我提一下这个吗?
function foo({ param1=55, param2=44, param3:param3 = { sub1:sub1='0', sub2:sub2=200, sub3:sub3='all' } } = { }) {
  console.log(param1, param2, param3);
}

foo({
  param3: {
    sub2: 55
  }
});

最佳答案

您正在为 {sub2: 55} 传递 param3 ,因此它不会评估默认值 { sub1:sub1='0', sub2:sub2=200, sub3:sub3='all' } (这里是文字,不是赋值目标,因此无论如何都不会做您认为它会做的事情)。

如果您希望 param3 始终是一个具有 3 个属性的对象,由三个默认值变量构造,您必须自己显式构建它:

function foo({param1=55, param2=44, param3: {sub1='0', sub2=200, sub3='all'} = {}} = {}) {
  var param3 = {sub1, sub2, sub3};
  console.log(param1, param2, param3);
}

关于javascript - 解构和设置嵌套的默认值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45948683/

10-12 00:04