0

これは簡単な答えかもしれませんが、関数をで使用するのに問題がありsetIntervalます。これが私がこれまでに持っているものです:

function countUp(n) {
     console.log(n++);
}

setInterval( function() { countUp(10); }, 1000);

変数を関数の外に移動してその値をインクリメントすると、機能します。ただし、関数を呼び出すときに番号を任意に設定できるようにしたいですcountUp。上記のコードはログを記録し続け10ます。

編集:

この関数に引数を渡して、グローバル変数を宣言せずにsetIntervalで機能させる方法はありますか?

4

1 に答える 1

3

関数の囲んでいるスコープで変数をインクリメントする必要があります。

var n = 10;

function countUp() {
    console.log(n++);
}

setInterval(countUp, 1000);

更新:グローバル変数を含まない戦略は次のとおりです。

function countUp(start) {
    return function() {
        console.log(start++)
    }
}
setInterval(countUp(10), 1000);

すでに述べたように、カウンターはグローバルスコープではなく、囲んでいるスコープ内にある必要があります。したがって、クロージャで参照できる関数に渡すと、ここで正常に機能します。

于 2012-12-03T00:14:11.777 に答える