31 lines
986 B
Markdown
31 lines
986 B
Markdown
# Армия функций
|
||
|
||
[importance 5]
|
||
|
||
Следующий код создает массив функций-стрелков `shooters`. По замыслу, каждый стрелок должен выводить свой номер:
|
||
|
||
```js
|
||
//+ run
|
||
function makeArmy() {
|
||
|
||
var shooters = [];
|
||
|
||
for (var i = 0; i < 10; i++) {
|
||
var shooter = function() { // функция-стрелок
|
||
alert( i ); // выводит свой номер
|
||
};
|
||
shooters.push(shooter);
|
||
}
|
||
|
||
return shooters;
|
||
}
|
||
|
||
var army = makeArmy();
|
||
|
||
army[0](); // стрелок выводит 10, а должен 0
|
||
army[5](); // стрелок выводит 10...
|
||
// .. все стрелки выводят 10 вместо 0,1,2...9
|
||
```
|
||
|
||
Почему все стрелки́ выводят одно и то же? Поправьте код, чтобы стрелки работали как задумано. Предложите несколько вариантов исправления.
|
||
|