2015-06-22 90 views
0
var myAlerts = [];  

for (var i = 0; i < 5; i++) {  
    myAlerts.push( 
     function inner() {  
      alert(i);  
     }  
    );  
}  

myAlerts[0](); // 5  
myAlerts[1](); // 5  
myAlerts[2](); // 5 
myAlerts[3](); // 5 
myAlerts[4](); // 5 

爲什麼數組中位置0-4的所有值都是「5」。我發現一些關於這方面的文章,因爲Javascript支持詞法範圍而不是Dynamic。是的,我明白了。但有什麼方法可以理解上述代碼片段的核心概念: 謝謝我很難理解這段JS代碼

+1

所有的功能是指'i',其值是替換'5' *的時候,他們正在執行*。 – Blorgbeard

回答

0

在這個特殊的功能中,值i是動態的,每當你改變i的值,它就會被新值替換。

我正在考慮作爲參考價值。

所以,如果你將其更改爲循環,直到10您將有所有我與10