Skip to content

改造下面的代码,让它输出1,2,3,4,5

Posted on:2024年7月22日 at 10:55

for(var i = 1; i <= 5; i ++){ setTimeout(function timer(){ console.log(i) }, 0) }


解决方法:

for (var i = 1; i <= 5; i++) {
  (function (j) {
    setTimeout(function timer() {
      console.log(j);
    }, 0);
  })(i);
}
for (var i = 1; i <= 5; i++) {
  setTimeout(
    function timer(j) {
      console.log(j);
    },
    0,
    i,
  );
}
for (let i = 1; i <= 5; i++) {
  setTimeout(function timer() {
    console.log(i);
  }, 0);
}

let使JS发生革命性的变化,让JS有函数作用域变为了块级作用域,用let后作用域链不复存在。

原文转自:https://fe.ecool.fun/topic/ba7ffa60-aa92-4e66-9b14-78520f4deeee