0

配列に偶数を追加する単純なテスト関数がある場合:

function isEven(n){
    var enumbers = [];
    if (n % 2 == 0){
        enumbers.push (n);
    }
}

配列に一定数のメンバーが含まれるまで、パラメーターをインクリメントするにはどうすればよいですか? たとえば、私はこれを試しました:

function isEven(n){
    var enumbers = [];
    while ( enumbers.length < 10){
    if (n % 2 == 0){
        enumbers.push (n);
    }
    console.log (enumbers);
             n = n + 1;
    isEven(n);
    }
}
isEven(1);

しかし、最終的に範囲エラー(最大コールスタックサイズを超えた)がスローされるまで、数値ごとに新しい配列を作成するだけのようです。

4

5 に答える 5

0

あなたの質問を理解したかどうかわかりません。ただし、グローバル変数は使用しないでください。while ループ内で関数を再帰的に呼び出す必要はありません。

エラーmaximum call stack size exceededは、ブラウザが無限ループを壊そうとしていることです。

これが必要です。

jsFiddle1jsFiddle2の例

function isEven(n) {
    var enumbers = [];

    while (enumbers.length < 10) {
        if (n % 2 == 0) {
            enumbers.push(n);
        }
        n++;
    }
    return enumbers;
}

テストをセットアップする

var n = 1;
var evenArray = isEven(n); //call isEven function and it returns an array

document.body.innerHTML = evenArray; //2,4,6,8,10,12,14,16,18,20
于 2013-06-20T20:15:05.060 に答える
0

is even メソッドの外で配列を作成することをお勧めします

于 2013-06-20T20:00:27.337 に答える