2013-03-26 4 views
0

Я пытаюсь выполнить следующий код:Javascript: использование глобальной переменной в определении функции

for (var i = 0; i <= 9; ++i) { 
    State.prototype["button" + i.toString()] = function() { 
     console.log("I am a digit button" + i.toString()); 
     this.setValue(i.toString()); 
    }; 
} 

Но это неправильно, потому что переменная я является общим для всех функция создана. Например, я хочу, чтобы функция State.prototype.button0() работать как:

console.log("I am a digit button" + "0"); 
this.setValue("0"); 

Как это сделать?

ответ

1

передать его в функцию, так что значение i не меняется:

for (var i = 0; i <= 9; ++i) { 
    (function(i){ 
     State.prototype["button" + i.toString()] = function() { 
      console.log("I am a digit button" + i.toString()); 
      this.setValue(i.toString()); 
     }; 
    })(i); 
} 
+0

Да, это он, спасибо! – maximus

Смежные вопросы