函数foo({defaultValue = {}} = {})中的语法是什么意思?

时间:2019-07-14 18:39:29

标签: javascript ecmascript-6

前几天我遇到了这个功能

 function foo({ defaultValue = {} } = {}) {
...
}

我不明白{ defaultValue = {} } = {}部分的确切含义。我知道有一个defaultValue的对象属性被破坏,并且如果没有参数传递给该函数,则默认参数设置为{}。但是我不确定该组合在做什么。有人可以向我解释吗?

2 个答案:

答案 0 :(得分:3)

  

我知道有一个defaultValue的对象属性被破坏,如果没有参数传递给该函数,则默认参数设置为{}

是的,就是这样

function foo({ defaultValue } = {}) {

会做的。

中的其他= {}
function foo({ defaultValue = {} } = {}) {
//                          ^^^^

当属性在对象中不存在或为defaultValue时,现在为undefined变量提供默认值。

答案 1 :(得分:0)

这是保证foo可以访问传递给-的对象参数的defaultValue属性的好方法-

给出-

function foo ({ bar = 1 } = {}) {
  console.log(bar)
}

foo() // => 1
foo({}) // => 1
foo({bar: 2}) // => 2

但是请特别注意null-

foo(null) // => TypeError: cannot read property "bar" of null

如果我们跳过最后的... = {}部分,那么它将无法在bar实例中读取undefined-

function foo ({ bar = 1 }) {
  console.log(bar)
}

foo()
// TypeError: Cannot destructure property "bar" of undefined or null