问题
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
回答1:
The i in the anonymous function captures the variable i, not its value.  By the end of the loop, i is equal to somearray.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:
function makeFunc(j) { return function() { console.log(somearray[j][0]); } }
for (var i = 0; i < somearray.length; i++)
{
    myclass.foo({'arg1':somearray[i][0]}, makeFunc(i));
}
makeFunc's argument could have been named i, but I called it j to show that it's a different variable than the one used in the loop.
回答2:
How about a closure:
for (var i = 0; i < somearray.length; i++) {
    var val = somearray[i][0];
    myclass.foo({'arg1': val}, function(v) {
      return function() {console.log(v) };
    }(val) );
}
    回答3:
for (var i = 0; i < somearray.length; i++)
{
    myclass.foo({'arg1':somearray[i][0]}, function(somearray)
    {
        console.log(somearray[i][0]);
    });
}
And then in method foo call anonymous function with param.
回答4:
You can pass variables values to annoymous function by using callback, something like
myclass.foo(function(variable){
      return function(){
        console.log(variable);
      }
    })(variableValue);
);
check this post: https://shahpritesh.wordpress.com/2013/09/06/javascript-function-in-loop-passing-dynamic-variable-value/
回答5:
All the functions/methods can be used as callbacks only. When you call the callback function you pass variables to it.
var myclass = {
  foo: function(params, callback){
    // do some stuff
    callback(variable1, variable1, variableN);
  }
}
    来源:https://stackoverflow.com/questions/3023874/arguments-to-javascript-anonymous-function