前几天我遇到了这个功能
function foo({ defaultValue = {} } = {}) {
...
}
我不明白{ defaultValue = {} } = {}
部分的确切含义。我知道有一个defaultValue
的对象属性被破坏,并且如果没有参数传递给该函数,则默认参数设置为{}
。但是我不确定该组合在做什么。有人可以向我解释吗?
答案 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