Javascript 嵌套for循环只执行外部循环一次

Javascript 嵌套for循环只执行外部循环一次,javascript,Javascript,所以我写了一些代码来解决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; }

所以我写了一些代码来解决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循环。这似乎是因为我在嵌套循环中调用了isAlindrome函数。当我删除if(isAlindrome())行时,嵌套的for循环将按其应该的方式执行。我对Javascript比较陌生,因此希望您能提供帮助。

因为您从未在
isPalindrome
中声明
I
,所以它使用了后来的代码声明的全局
I
(这看起来很奇怪)。请确保在函数中声明变量。

因为您从未在
isAlindrome
中声明
i
,所以它使用的是后面代码声明的全局
i
(看起来很奇怪)。确保在函数中声明变量。

您的
isAlindrome
函数正在访问与外部循环相同的迭代变量:
for(i=String(num).length-1;
i刚才回答了这个问题:一般建议。不要执行
if(booleanCondition)返回true;否则返回false;
。这没用。只需返回booleanCondition;。您的
isAlindrome
函数正在访问与外部循环相同的迭代变量:
for(i=String(num).length-1;
我刚刚回答了这个问题:一般建议。如果(booleanCondition),请不要执行
if(booleanCondition)返回true;否则返回false;
。这没用。只需返回booleanCondition;。实际上,您在该函数内重新分配i变量确实,您在该函数内重新分配i变量