omr*_*don 25 javascript javascript-objects ecmascript-6 spread-syntax
在开发我的反应程序,我需要一个条件道具发送到一个组件,所以我在什么地方找到一个模式来做到这一点,但它似乎很奇怪,我和我无法理解如何以及为什么它的工作.
如果我输入:
console.log(...undefined) // Error
console.log([...undefined]) // Error
console.log({...undefined}) // Work
Run Code Online (Sandbox Code Playgroud)
在未定义时激活扩展运算符时会引发错误,但是当undefined在对象内部时,会返回一个空对象.
我对这种行为感到非常惊讶,这真的是它应该如何,我能依靠这个并且这是一个好习惯吗?
bit*_*der 25
此行为对于执行可选传播等操作非常有用:
function foo(options) {
const bar = {
baz: 1,
...(options && options.bar) //options and bar can be undefined
}
}
Run Code Online (Sandbox Code Playgroud)
使用可选链接可以获得更好的效果,包括stage-1:
function foo(options) {
const bar = {
baz: 1,
...options?.bar //options and bar can be undefined
}
}
Run Code Online (Sandbox Code Playgroud)
一个想法:它太糟糕了它也不适用于扩散到阵列中