Javascript代码内存不足

时间:2013-06-26 02:02:15

标签: javascript

当我运行以下代码时,它会崩溃浏览器或告诉我进程内存不足。我相信我犯了一个错误。以下代码有什么问题:

var primes = new Array();
var nonprimes = new Array();

var factor = function(n){
    for (var i = n; n > 1; i--)
    {
        if (n%i === 0 || n !== i){
            primes.push(i);
        }else{nonprimes.push(i);}
    }
}
factor(2);
console.log(primes);

2 个答案:

答案 0 :(得分:8)

您正在减少i,但会检查n > 1

基本上,您已经创建了infinite loop,因为您永远不会减少n的值。循环中的条件允许执行,直到它们计算为false。在您的示例中,for循环的condition子句将始终求值为true,循环将永远继续。

考虑:

for (var i = n; i > 1; i--){

答案 1 :(得分:2)

您的循环将一直运行,直到n > 1变为false,但n永远不会更改。