我只是漫无目的地玩,我偶然发现了一些我不明白的东西。
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
......?
我可能只是进行了选择性失明攻击,但我真的看不到范围误入歧途。