I have a piece of code and particularly a function that returns an array of functions. The issue is when I call functions in this array the results is always NaN while should be a valid number. Is it probably related to the scope?
var arr = [ Math.random(), Math.random(), Math.random(), Math.random() ];
var square = function (x) { return x * x; };
function makeSquareFns(arr, square) {
var fns = [];
for (var i = 0, l = arr.length; i < l; i++) {
fns.push(function() {
return square(arr[i]);
});
}
return fns;
}
var funcs = makeSquareFns(arr, square);
console.log(funcs[0]()); // IT RETURNS NaN