我正在学习代码库(redux sagas)中的生成器函数,并发现传入了像这样的参数:
export function* someGenerator({ x, y = {} }) {
当我运行它时,像这样:
someGenerator('xyz', 'abc')
就像常规函数一样,它返回未定义(undefined)。
我不理解 ({}) 部分或者如何向这样一个函数传递参数。
问题是我正在尝试在另一个生成器函数中调用一个生成器函数。
我正在学习代码库(redux sagas)中的生成器函数,并发现传入了像这样的参数:
export function* someGenerator({ x, y = {} }) {
someGenerator('xyz', 'abc')
就像常规函数一样,它返回未定义(undefined)。
我不理解 ({}) 部分或者如何向这样一个函数传递参数。
问题是我正在尝试在另一个生成器函数中调用一个生成器函数。
该函数使用默认对象属性。它做了两件事:
x
的对象,则解构属性x
。y
。如果参数中没有属性y
,则将其赋值为空对象。请看下面的示例:
function someGenerator({ x, y = {} }) {
console.log(x)
console.log(y)
}
someGenerator({x:'xyz',y:'abc'})
someGenerator({x:'xyz'}) // 'y' will empty object.
generator
无关。export function* someGenerator({ x, y = {} }) {
someGenerator('xyz', 'abc')
let { x, y = {} } = 'xyz'
现在:
x equal to undefined
y equal to {}
someGenerator({ x: 'param1', y: 'param2' })
y
创建一个新的{}
。 - wizzwizz4