4

不明な回数呼び出される関数があります。関数が何回実行されたかを知る必要があるため、次のようにしています。

(function () {    

    var i = 0,
        increment = function () {
            if (i === 0) {
                setTimeout(function () {
                    console.log('increment was called ' + i + ' times.'); // increment was called 3 times.
                    i = 0;
                }, 0);
            }
            i++;
        };

    increment();
    increment();
    increment();

})();

これがすべてのブラウザーで信頼できるかどうか、またはこれを達成するためのより良いパターンがあるかどうか、誰か教えてもらえますか?

4

2 に答える 2

1

setTimeout()関数をキューに配置します。この関数は、他のすべての関数が実行されたときに実行されます。

を呼び出すsetTimeout()前に数回呼び出すと、変数が 1 より大きい値に達していることにincrement()気付くでしょう。i

于 2012-12-06T02:22:47.203 に答える
0

はい、このコード スニペットは、IE の最も低いバージョンでも、すべてのブラウザーで信頼できるようです。私はこれをIE8で試しましたが、うまくいきました。

于 2012-12-06T02:22:05.000 に答える