[关闭]
@hotjp 2017-03-13T14:21:23.000000Z 字数 511 阅读 1250

前端面试趣题

面试题


过完年,开年看的最多的就是新年前端面试吐槽,看到一个很有趣的题目,涉及到setTimeout和闭包的内容,拿出来和大家一起做一下

以下代码在执行后会输出什么

  1. for (var i = 0; i < 5; i++) {
  2. console.log(i);
  3. }

如果需要延迟执行,增加setTimeout,会发生什么

  1. for (var i = 0; i < 5; i++) {
  2. setTimeout(function() {
  3. console.log(i);
  4. }, 1000 * i);
  5. }

假如套上一个立即执行函数

  1. for (var i = 0; i < 5; i++) {
  2. (function(i) {
  3. setTimeout(function() {
  4. console.log(i);
  5. }, i * 1000);
  6. })(i);
  7. }

上例去掉小括号的i

setTimeout的位置调整一下

  1. for (var i = 0; i < 5; i++) {
  2. (function() {
  3. setTimeout(function() {
  4. console.log(i);
  5. }, i * 1000);
  6. })(i);
  7. }

回到第一题

  1. setTimeout(function(){
  2. console.log(0);
  3. },0);
  4. for (var i = 0; i < 5; i++) {
  5. console.log(i);
  6. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注