为什么在else语句中randomHull()之前需要“返回”?

时间:2020-04-24 17:44:33

标签: javascript function if-statement recursion return

此功能的目标是返回3到6之间的值。我知道有一种更简单的方法可以执行此操作,但是我只是想了解此选项的工作方式/原因。

以下函数有效,但仅当您在else语句中使用return时。如果您不使用“ return randomHull()”,而是仅放置“ randomHull()”,则如果第一次尝试不在该范围内,它将返回未定义。

我最初的理解是不需要返回,因为只有在if语句为true时才存储值,否则它将再次运行randomHull()直到它通过if语句并返回范围内的值。

为什么else语句中randomHull()之前需要“返回”?

const randomHull = () => {
     let alienHull = Math.ceil(Math.random() * 6);
     if (alienHull >= 3) {
        return alienHull;
     } else {
        return randomHull();
     }

}

console.log(randomHull());

2 个答案:

答案 0 :(得分:0)

说它在第二次尝试中找到了匹配项。

第一次尝试到达else分支,然后调用activate函数。

从中返回的值将传递回调用函数(对randomHull的第一次调用)。然后,它什么也做不了(因为您取出randomHull而不返回它,也没有将其存储在变量中,因为您也没有这样做,等等)。

包含对return的首次调用。它击中randomHull以结束else块。然后按}结束功能。由于它到达函数的末尾而没有}语句,因此它返回return

答案 1 :(得分:0)

这是一个递归函数。

https://en.wikipedia.org/wiki/Recursion_(computer_science)

之所以起作用,是因为它再次调用自身,直到满足if中的条件为止。每次执行都将离>= 3更近一步,最终在if中遇到问题。