Skip to content

Instantly share code, notes, and snippets.

@IPRIT
Last active March 6, 2016 00:31
Show Gist options
  • Select an option

  • Save IPRIT/ebbeb6d168bb2ba8ff32 to your computer and use it in GitHub Desktop.

Select an option

Save IPRIT/ebbeb6d168bb2ba8ff32 to your computer and use it in GitHub Desktop.

Lesson 1

Task 3

Задание: Циклы, функции и контексты.

Физрук построил шеренгу. У каждого есть свой номер, который должны выкрикнуть своему физруку. Представим, что массив - это шеренга, элемент массива - ученик, а ученик это функция, которая делает alert со своим номером. В приведеном коде строится массив функций, а затем некоторые функции из этого массива вызываются.

Ответьте на вопрос: почему все ученики выкрикивают один и тот же номер. Модифицируйте решение, чтобы каждый ученик выкрикивал свой номер.

Код:

function makeLine() {

  var students = [];

  for (var i = 0; i < 10; i++) {
    var student = function() { // функция-ученик
      alert( i ); // кричит свой номер
    };
    students.push(student);
  }

  return students;
}

var line = makeLine();

line[0](); // ученик кричит 10, а должен 0
line[5](); // ученик по-прежнему кричит 10..., а должен 5
// .. все ученики кричат 10 вместо 0,1,2...9

Решение должно быть в файле app.js.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment