首页 > 代码库 > javascript 定时器

javascript 定时器

for (var i = 0; i < 5; i++) {
  setTimeout(function() {
    console.log(new Date, i)
  }, 1000);
};

输出结果:

Mon Apr 24 2017 09:33:47 GMT+0800 (中国标准时间) 5
(index):32 Mon Apr 24 2017 09:33:47 GMT+0800 (中国标准时间) 5
(index):32 Mon Apr 24 2017 09:33:47 GMT+0800 (中国标准时间) 5
(index):32 Mon Apr 24 2017 09:33:47 GMT+0800 (中国标准时间) 5
(index):32 Mon Apr 24 2017 09:33:47 GMT+0800 (中国标准时间) 5

采用闭包解决

for (var i = 0; i < 5; i++) {
  (function(k) {
    setTimeout(function() {
      console.log(new Date, k)
    }, 1000)
  })(i);
};

输出结果:

Mon Apr 24 2017 09:33:47 GMT+0800 (中国标准时间) 0
(index):40 Mon Apr 24 2017 09:33:47 GMT+0800 (中国标准时间) 1
(index):40 Mon Apr 24 2017 09:33:47 GMT+0800 (中国标准时间) 2
(index):40 Mon Apr 24 2017 09:33:47 GMT+0800 (中国标准时间) 3
(index):40 Mon Apr 24 2017 09:33:47 GMT+0800 (中国标准时间) 4

采用ES6语法解决

for (let i = 0; i < 5; i++) {
  setTimeout(function() {
    console.log(new Date, i)
  }, 1000);
};

注:let作用域只在for循环中~

输出结果:

Mon Apr 24 2017 09:38:42 GMT+0800 (中国标准时间) 0
(index):58 Mon Apr 24 2017 09:38:42 GMT+0800 (中国标准时间) 1
(index):58 Mon Apr 24 2017 09:38:42 GMT+0800 (中国标准时间) 2
(index):58 Mon Apr 24 2017 09:38:42 GMT+0800 (中国标准时间) 3
(index):58 Mon Apr 24 2017 09:38:42 GMT+0800 (中国标准时间) 4

 

javascript 定时器