Пожалуйста, объясните, что происходит с этим фрагментом кода в консоли Chrome?

Javascript код:

for(var i=0; i<5; i++){
  console.log(i);
  setTimeout(function(){
    console.log(" magic "+ i)
  }, 2000);

};

выходы:

выход

  1. Что означает число 25 имею в виду?
  2. Как i был увеличен до 5 в то время как i++ недоступен после 4?

1 ответ

Вы получаете числа от 0 до 4 от:

console.log(i);

и 5 раз "магия 5", потому что вы выполняете

console.log(" magic "+ i)

5 раз после того, как вы посчитали i до 5

Более интересная часть - другой номер. Это результат последнего setTimeout(...), Каждый раз, когда вы выполняете Javascript в консоли, вы получаете возвращаемое значение вашего кода (console.log("foo") даст undefined). Последнее утверждение, непосредственно выполненное в вашем коде, является setTimeout который возвращает идентификатор.

Другие вопросы по тегам