JavaScript - 定时器相关(面试题)

133 阅读1分钟

  这两天在群里看到有人遇到了一个定时器的面试题,还是有一定难度的,所以在这里记录一下。

  1. 先贴代码
        function fn1() {
            for (var i = 0; i < 4; i++) {
                // console.log("i:"+i);
                var tc = setTimeout(function (i) {
                    console.log(i);
                    clearTimeout(tc)
                }, 10, i);
            }
        }
        function fn2() {
            for (var i = 0; i < 4; i++) {
                var tc = setInterval(function (i, tc) {
                    console.log(i);
                    // console.log("tc:"+tc);
                    clearInterval(tc)
                }, 10, i, tc);
                // console.log("tc:"+tc);
            }
        }

        fn1()
        fn2()
  1. 运行结果:

可以看到,fn1的运行结果为0 1 2,fn2的运行结果为0 1 2 3,且定时器一直打印3