LINUX.ORG.RU

История изменений

Исправление tz4678, (текущая версия) :

Про js-quiz’ы там обычно замыкания:

const arr = [10, 12, 15, 21];
for (var i = 0; i < arr.length; i++) {
  setTimeout(function() {
    // тут i принадлежит глобальному скопу и всегда 4, потому как этот код вызвается в следующей итерации основного цикла все 4 раза
    console.log('Index: ' + i + ', element: ' + arr[i]);
  }, 10);
}

// Index: 4, element: undefined

// Но стоит заменить var на let
for (let i = 0; i < arr.length; i++) {
  setTimeout(function() {
    // тут i принадлежит локальному скопу (внутри итерации)
    console.log('Index: ' + i + ', element: ' + arr[i]);
  }, 10);
}

// Index: 0, element: 10
// Index: 1, element: 12
// Index: 2, element: 15
// Index: 3, element: 21

Исходная версия tz4678, :

Про js-quiz’ы там обычно замыкания:

const arr = [10, 12, 15, 21];
for (var i = 0; i < arr.length; i++) {
  setTimeout(function() {
    console.log('Index: ' + i + ', element: ' + arr[i]);
  }, 10);
}

// Index: 4, element: undefined

// Но стоит заменить var на let
for (let i = 0; i < arr.length; i++) {
  setTimeout(function() {
    console.log('Index: ' + i + ', element: ' + arr[i]);
  }, 10);
}

// Index: 0, element: 10
// Index: 1, element: 12
// Index: 2, element: 15
// Index: 3, element: 21