首先是這兩段代碼代碼1: function createFunctions() { var result = new Array(); for (var i = 0; i < 10; i++) { result[i] = function() { return i; }; } return result;}var funcs = createFunctions();for (var i = 0; i < 10; i++) { alert(funcs[i]());}代碼2:for (var i = 0; i < aLi.length; i++) { aLi[i].onmouseover = function() { this.style.background = 'red'; }; aLi[i].onmouseout = function() { this.style.background = '#fff'; }}請問:1.為什么代碼1中,在最后i變成10之后才執行函數的內容,而代碼2卻是按i的自增順序每次都執行呢?2.這和js的異步執行是否有關系?但我又對這里的執行順序感到十分混亂,捋不清楚,請大神詳細說一下
關于塊級作用域,閉包的問題
Helenr
2019-03-27 22:19:23