gpt4 book ai didi

javascript - 从子函数内部的父函数返回 - Javascript

转载 作者:数据小太阳 更新时间:2023-10-29 04:38:46 25 4
gpt4 key购买 nike

我是 JavaScript 编码的新手,遇到了一个问题。我喜欢嵌套函数以保持有序,但如何从子函数内部退出父函数?

例子:

function foo1() {
function foo2() {
//return foo1() and foo2()?
}
foo2();
}

最佳答案

查看首屏更新

你不能。只能从子函数返回,再从父函数返回。

我应该注意到,在您的示例中,没有任何内容会调用 foo2 (在您的编辑中,某些内容会调用)。让我们看一个更真实的例子(一个经常出现的例子):假设我们想知道一个数组是否包含一个符合某些标准的条目。第一步可能是:

function doesArrayContainEntry(someArray) {
someArray.forEach(function(entry) {
if (entryMatchesCondition(entry)) {
return true; // Yes it does <-- This is wrong
}
});
return false; // No it doesn't
}

你不能直接这样做。相反,您必须以停止 forEach 循环的方式从匿名迭代器函数返回。由于 forEach 没有提供这样做的方法,您可以使用 some,它可以:

function doesArrayContainEntry(someArray) {
return someArray.some(function(entry) {
if (entryMatchesCondition(entry)) {
return true; // Yes it does
}
});
}

some 如果对迭代器函数的任何调用返回 true,则返回 true(并停止循环);如果没有调用迭代器返回 true,它返回 false

同样,这只是一个常见的例子。


您在下面提到了 setInterval,这告诉我您几乎肯定是在浏览器环境中执行此操作。

如果是这样,您的 play 函数几乎可以肯定已经在您想要执行您正在谈论的事情时返回,假设游戏与用户有任何交互而不是 alert 确认。这是因为环境的异步性质。

例如:

function play() {
var health = 100;

function handleEvent() {
// Handle the event, impacting health
if (health < 0 {
// Here's where you probably wanted to call die()
}
}

hookUpSomeEvent(handleEvent);
}

问题是,play 将运行并几乎立即返回。然后浏览器等待你连接的事件发生,如果发生,它会触发handleEvent中的代码。但是 play 早就回来了。

关于javascript - 从子函数内部的父函数返回 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20999298/

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