en.javascript.info/1-js/06-advanced-functions/03-closure/10-make-army/task.md
Ilya Kantor 964ed57c42 closure
2019-12-26 14:59:57 +03:00

35 lines
689 B
Markdown

importance: 5
---
# Army of functions
The following code creates an array of `shooters`.
Every function is meant to output its number. But something is wrong...
```js run
function makeArmy() {
let shooters = [];
let i = 0;
while (i < 10) {
let shooter = function() { // shooter function
alert( i ); // should show its number
};
shooters.push(shooter);
i++;
}
return shooters;
}
let army = makeArmy();
army[0](); // the shooter number 0 shows 10
army[5](); // and number 5 also outputs 10...
// ... all shooters show 10 instead of their 0, 1, 2, 3...
```
Why do all of the shooters show the same value? Fix the code so that they work as intended.