嵌套for循环只在Javascript执行外循环

时间:2016-12-31 18:18:48

标签: javascript

所以我写了一些代码来解决Project Euler关于回文问题的一个问题:

var isPalindrome = function(num){
    var tempString = "";
    for(i = String(num).length - 1; i >= 0; i--){
        tempString += String(num)[i];
    }
    if(tempString === String(num)){
        return true;
    }
    else{
        return false;
    }
};

var palindromes = [];
var inCount = 0;
var count = 0;
for(var i = 999; i > 99; i--){
    inCount++;
    for(var j = i; j > 99; j--){
        count++;
        if(isPalindrome(i*j)){
            palindromes.push(i*j);
        }
    }
}
console.log(inCount);
console.log(count);
console.log(Math.max(palindromes));

经过一些测试后,我发现代码只运行一次外部for循环。这似乎是因为我在嵌套循环中调用isPalindrome函数。当我删除if(isPalindrome())行时,嵌套的for循环按原样执行。我对Javascript比较陌生,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:5)

因为您从未在i中声明isPalindrome,所以它使用后面的代码声明的全局i(可能看起来很奇怪)。请务必在函数中声明变量