此功能的目标是返回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());
答案 0 :(得分:0)
说它在第二次尝试中找到了匹配项。
第一次尝试到达else分支,然后调用activate
函数。
从中返回的值将传递回调用函数(对randomHull
的第一次调用)。然后,它什么也做不了(因为您取出randomHull
而不返回它,也没有将其存储在变量中,因为您也没有这样做,等等)。
包含对return
的首次调用。它击中randomHull
以结束else块。然后按}
结束功能。由于它到达函数的末尾而没有}
语句,因此它返回return
。
答案 1 :(得分:0)
这是一个递归函数。
https://en.wikipedia.org/wiki/Recursion_(computer_science)
之所以起作用,是因为它再次调用自身,直到满足if中的条件为止。每次执行都将离>= 3
更近一步,最终在if中遇到问题。