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