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()在调用 之前调用了几次increment(),您可能会注意到i变量的值大于 1。

于 2012-12-06T02:22:47.203 回答
0

是的,即使在最低版本的 IE 中,这个代码片段似乎在所有浏览器中都是可靠的。我在 IE8 中试过这个,效果很好。

于 2012-12-06T02:22:05.000 回答