文章詳情頁
javascript - 為什么結果是3不是2呢?
瀏覽:91日期:2023-05-16 09:28:24
問題描述
function F(){ var arr=[],i; for(i=0;i<3;i++){arr[i]=function(){ return i;}; } return arr;}arr[0]();//3arr[1]();//3arr[2]();//3
問題解答
回答1:for(i=0;i<3;i++){循環體}執行過程是賦初值0,然后執行判斷語句i<3,為true的話,執行循環體,循環體執行完之后執行i++;所以當i執行到2的時候,i<3為true,執行循環體,然后i++,此時i等于3,然后判斷i<3,判斷為false,不執行循環體,退出循環,此時i=3;
回答2:最后一次for循環過后,i++把i變成了3
回答3:此題用斷點方式很容易就看出來了,其實就是函數執行時機的問題,函數是在調用時才執行,循環執行完后,i=3,再調用數組內的函數時,i只能為3.
回答4:js順序執行,首先執行所有的循環,在執行的過程中以此arr[0]= function(){return i;},arr[1]= function(){return i;},arr[2]= function(){return i;}同時i循環后編程3,接著調用arr[0]()等調用的時候,此時作用域內的i是3,所以依次都會是3.
PS: 這題應該會先執行arr = F()把,否則會報錯呀~~
標簽:
JavaScript
相關文章:
1. javascript - jquery怎么給select option一個點擊時觸發的事件,如圖 如果選擇自定義觸發一個時間?2. javascript - 怎樣限制同一個瀏覽器不能登錄兩個賬號3. nginx配置server模塊的問題4. java - android代碼重構:如何把app設置里的頭像UI做成通用的?5. 想找個php大神仿個網站。6. java - 新手做一個安卓視頻播放器,想實現一個進度條,按鈕那種在視頻下方懸浮的功能,不知道思路!7. javascript - angular和jquery都用到了$符號,一起用會不會沖突?8. css3 - Typecho 后臺部分表單按鈕在 Chrome 下出現靈異動畫問題,求解決9. mysql優化 - 關于mysql分區10. 如何將行內塊元素的內容垂直水平兩個方向居中?
排行榜
