这实际上是来自redux-thunk示例的代码:
function fetchSecretSauce() {
return fetch('https://www.google.com/search?q=secret+sauce');
}
以下是我正在使用的内容:
const fetch = () => {
return fetch('https://www.google.com/search?q=secret+sauce')
}
console.log(fetch())
如果您“运行代码段”,则会收到错误消息:
未捕获RangeError:超出最大调用堆栈大小
我也尝试了不同的链接。
答案 0 :(得分:1)
您的小提琴不正确,并不代表您从redux-thunk提供的示例。在他们的示例中,他们使用名为fetch
的函数包装fetchSecretSauce
请求。你所做的是声明一个函数fetch
,它调用一个函数fetch
(你刚刚定义的函数),从而通过一遍又一遍地调用自己来创建一个无限循环。
JavaScript引擎对可以调用某些内容的次数有限制。当达到此限制时,JavaScript引擎会这样思考:
我相信这会永远持续下去,所以我会阻止任何坏事 发生并立即终止它。我还会给你这个描述性的 消息:
Uncaught RangeError: Maximum call stack size exceeded
。
在下面你会找到一个与你的相同的例子减去函数名称。点击"运行代码段"而且你会看到同样的无限循环:
function infiniteLoop() {
return infiniteLoop('https://www.google.com/search?q=secret+sauce');
}
console.log(foo());

完全按照他们的示例和重命名包装函数完全不同。将其命名为您想要的任何名称,只需不要将其命名为fetch
。
function searchGoogleForSecretSauce() {
return fetch('https://www.google.com/search?q=secret+sauce');
}