2013-03-26 58 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()); 
    }; 
} 

但它是錯誤的,因爲所有的函數創建的變量i是常見的。 比如我想要的功能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 2013-03-26 10:43:28