あてもなく遊んでいて、わからないものに出くわしました。
var result;
// [.............. more stuff ..............]
function iterate(n) {
if (isDivisor(n)) {
if (checkIfPrime(n)) {
result = n;
return result;
}
iterate(n-2);
}
iterate(n-2);
}
result = iterate(startN)
console.warn("result is ", result)
//(isDivisor() and checkIfPrime() omitted because irrelevant to the problem
したがって、期待値に達すると再帰が停止するという制限的な意味で、コードは正常に機能します。しかし!私が得るコンソールでundefined
。
result
はグローバルであり、関数内、特に 内では再宣言されませんiterate()
。n
返されたときに正しい値を持っていiterate()
ます。iterate()
グローバルスコープにアクセスできます(そしてそこに住んでいます)では、どうすればundefined
...という結果になるのでしょうか?
私はおそらく選択的な盲目の攻撃を受けているだけですが、スコープがどこで迷うのか本当にわかりません.