在开发我的反应应用程序时,我需要向一个组件发送一个条件道具,所以我发现某个模式可以这样做,虽然它对我来说似乎很奇怪,我无法理解它是如何以及为什么有效。
如果我输入:
console.log(...undefined) // Error
console.log([...undefined]) // Error
console.log({...undefined}) // Work
当未定义时激活扩展运算符时会引发错误,但是当undefined在对象内部时,会返回一个空对象。
我对这种行为感到非常惊讶,这真的是它应该如何,我可以依靠这个并且这是一个好的做法吗?
答案 0 :(得分:21)
此行为对于执行可选传播:
等操作非常有用function foo(options) {
const bar = {
baz: 1,
...(options && options.bar) //options and bar can be undefined
}
}
optional chaining位于stage-1
:
function foo(options) {
const bar = {
baz: 1,
...options?.bar //options and bar can be undefined
}
}
一个想法:它太糟糕了,它也无法传播到一个数组