ES6解构嵌套可选参数?

5
考虑以下ES6代码:
function foo({name, address: {street, postcode}}) {
  console.log(name, street, postcode);
}

foo({name: 'John', address: {street: 'Foo', postcode: 1234}});
foo({name: 'Bob'});

第一个调用按预期工作。但是,我想使address为可选项(streetpostcode将是undefined),而不是抛出错误。这个有可能吗?

1个回答

6
我找到了解决方案:
function foo({name, address: {street, postcode} = {}}) {
  console.log(name, street, postcode);
}

1
是的,除了 {} 周围的括号不是必需的。不幸的是,jshint 仍然会失败。 - user663031
@torazaburo,您的意思是如果没有(),jshint会失败吗? - Elliot Chance
1
@torazaburo 如果你在使用ES6,应该考虑迁移到eslint。 - Kunal Kapadia
不,我的意思是解构参数列表(和赋值)中的默认值会导致失败。无论如何,我已经搬走了。顺便说一句,很好的问题。 - user663031

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接