gpt4 book ai didi

javascript - Redux createStore 源代码 - 增强器递归的回调部分存在无限循环风险?

转载 作者:行者123 更新时间:2023-12-03 01:37:21 24 4
gpt4 key购买 nike

我目前正在研究 Redux.js。由于喜欢阅读源代码,我立即开始研究 Redux 源代码。

阅读the createStore code ,我陷入了以下代码:

export default function createStore(reducer, preloadedState, enhancer) {
if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
enhancer = preloadedState
preloadedState = undefined
}

if (typeof enhancer !== 'undefined') {
if (typeof enhancer !== 'function') {
throw new Error('Expected the enhancer to be a function.')
}

return enhancer(createStore)(reducer, preloadedState)
}

createStore 代码的循环是否应该以无限循环结束?导致增强器递归地调用自己的 createStore 函数。所以我在这个样板中看到了两种情况:- 要么因为增强器未定义,所以函数以错误结束- 或者一切都很好,函数再次返回 createStore,一次又一次......

你如何分析这个片段?

谢谢

最佳答案

请注意,如果typeof preloadedState !== 'function' && typeof booster === 'undefined',该函数将完成其余的工作。

然后,当我们调用 enhancer(createStore)(reducer, preloadedState) 时,enhancedCreateStore 会得到 enhancer === 'undefined'

当我们调用createStore(reducer, preloadedState)当且仅当preloadedState === 'function时,我们最终会调用enhancedCreateStore(reducer, undefined, undefined)

这就是为什么它不会以无限循环结束。

关于javascript - Redux createStore 源代码 - 增强器递归的回调部分存在无限循环风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51006952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com