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