久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日焦點 焦點資訊 營銷之道 企業報道 淘寶運營 網站建設 軟件開發 400電話
  當前位置: 首頁 » 資訊 » 軟件開發 » 正文

JS中for循環閉包問題如何解決

放大字體  縮小字體 發布日期:2018-02-24  來源:企業800網  作者:新格網  瀏覽次數:27  【去百度看看】
核心提示:JS中for循環閉包問題如何解決
本文我們將和大家分享兩種JS中for循環閉包問題如何解決的方法,希望能幫助到大家。


像這樣一個代碼片段,初學者會理所當然地認為依次點擊Li會彈出相應的0、1、2、3、4、5,但實際結果卻是這樣的


我們無論點哪個按鈕,最后彈出來的都是6。這就是經典的for循環閉包問題。

那么,首先讓我們來了解一下什么是閉包,百度百科是這樣解釋的:閉包是可以包含自由(未綁定到特定對象)變量的代碼塊;這些變量不是在這個代碼塊內或者任何全局上下文中定義的,而是在定義代碼塊的環境中定義(局部變量)。“閉包” 一詞來源于以下兩者的結合:要執行的代碼塊(由于自由變量被包含在代碼塊中,這些自由變量以及它們引用的對象沒有被釋放)和為自由變量提供綁定的計算環境(作用域)。在 Scala、Scheme、Common Lisp、Smalltalk、Groovy、Javascript、Ruby、 Python、Lua、objective c 以及Java(Java8及以上)等語言中都能找到對閉包不同程度的支持。

而我的簡單理解就是:一個函數中嵌套了另一個函數,里面的一個函數要訪問外層函數的變量,所以就形成了一個閉包,閉包即是為了保留某些局部變量的值而存在的。

然而javascript 有些常見的閉包問題,比如上面的例子,那么我們來看看怎么解決這些問題。

解決方案一:加一層閉包,i 以函數參數形式傳遞給內層函數:

結果就是點擊相應的li會彈出相應的數字,比如點第三個li,會出現以下效果:

解決方案二:找個屬性將i值保存起來,然后彈出這個值

點第三個li,會出現以下效果:

相關推薦:

Javascript for循環if判斷語句詳解

for-in循環和for循環遍歷數組的用法

javascript中for循環使用時的注意事項

以上就是JS中for循環閉包問題如何解決的詳細內容,更多請關注php中文網其它相關文章!

 
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規舉報 ]  [ 關閉窗口 ]

 
0條 [查看全部]  相關評論

 
網站首頁 | 關于我們 | 聯系方式 | 使用協議 | 版權隱私 | 網站地圖 | 排名推廣 | 廣告服務 | 積分換禮 | 網站留言 | RSS訂閱 | 皖ICP備2021004516號-14
企業800網 · 提供技術支持