35 lines
689 B
Markdown
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.
|
|
|