by Pawan Kumar @jsartisan
The following code creates an array of functions. Every function is meant to output its number. But something is wrong:
function createFunctions() {
let functions = [];
let i = 0;
while (i < 10) {
let func = function() {
console.log(i);
};
functions.push(func);
i++;
}
return functions;
}
const funcs = createFunctions();
// all functions show 10 instead of their numbers 0, 1, 2, 3...
funcs[0](); // 10 from the function at index 0
funcs[1](); // 10 from the function at index 1
funcs[2](); // 10 ...and so on.
Why do all of the functions show the same value?
Fix the code so that they work as intended.