for (var i = 0; i < somearray.length; i++)
{
myclass.foo({'arg1':somearray[i][0]}, function()
{
console.log(somearray[i][0]);
});
}
How do I pass somearray or one of its indexes into the anonymous function ? somearray is already in the global scope, but I still get somearray[i] is undefined
The
i
in the anonymous function captures the variablei
, not its value. By the end of the loop,i
is equal tosomearray.length
, so when you invoke the function it tries to access an non-existing element array.You can fix this by making a function-constructing function that captures the variable's value:
makeFunc
's argument could have been namedi
, but I called itj
to show that it's a different variable than the one used in the loop.And then in method foo call anonymous function with param.
All the functions/methods can be used as callbacks only. When you call the callback function you pass variables to it.
How about a closure:
You can pass variables values to annoymous function by using callback, something like
check this post: https://shahpritesh.wordpress.com/2013/09/06/javascript-function-in-loop-passing-dynamic-variable-value/