javascript閉包的應用簡單程式碼例項
關於閉包的概念可以參閱閉包概念簡單解析一章節。
先看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> ul li{ font-size:12px; list-style:none; cursor:pointer; height:30px; } </style> <script type="text/javascript"> window.onload=function(){ var lis=document.getElementsByTagName("li"); var odiv=document.getElementById("show"); for(var index=0;index<lis.length;index++){ lis[index].onclick=function(){ odiv.innerHTML=index; } } } </script> </head> <body> <div id="show"></div> <ul id="box"> <li>只有努力奮鬥才會有美好的未來。</li> <li>螞蟻部落歡迎您,希望能夠給大家提供需要的知識。</li> <li>分享的精神和互助的胸懷是進步的最大源動力。</li> <li>只有當前的時間才是最真實的,下一秒都是虛幻的。</li> <li>每一天都是新的,要好好的珍惜。</li> </ul> </body> </html>
上面的程式碼我們的本意是點選li元素能夠顯示對應的索引。
出現這種狀況的原因是,當事件處理函式繫結完畢之後,index的值也就變成了5了。
程式碼修改如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> ul li{ font-size:12px; list-style:none; cursor:pointer; height:30px; } </style> <script type="text/javascript"> window.onload=function(){ var lis=document.getElementsByTagName("li"); var odiv=document.getElementById("show"); for(var index=0;index<lis.length;index++){ (function(index){ lis[index].onclick = function(){ odiv.innerHTML=index; } })(index); } } </script> </head> <body> <div id="show"></div> <ul id="box"> <li>只有努力奮鬥才會有美好的未來。</li> <li>螞蟻部落歡迎您,希望能夠給大家提供需要的知識。</li> <li>分享的精神和互助的胸懷是進步的最大源動力。</li> <li>只有當前的時間才是最真實的,下一秒都是虛幻的。</li> <li>每一天都是新的,要好好的珍惜。</li> </ul> </body> </html>
上面的程式碼實現了我們的要求,下面做一下簡單介紹。
此程式碼是將函式當返回值,通過自執行函式的引數,把變數index傳進去(因為是通過函式引數的方式傳遞,所以內部的index與外部的index就已經隔絕),然後因為返回函式要引用這個index變數,所以當for迴圈結束也不會釋放index變數。即在記憶體中儲存了index變數的值。
相關文章
- javascript閉包簡單程式碼例項JavaScript
- 閉包程式碼例項演示
- js prototype原型應用簡單例項程式碼JS原型單例
- javascript作用域簡單例項程式碼JavaScript單例
- JavaScript 動畫效果簡單例項程式碼JavaScript動畫單例
- JavaScript簡單的日曆效果程式碼例項JavaScript
- javascript閉包的理解和例項JavaScript
- javascript實現的動畫效果簡單例項程式碼JavaScript動畫單例
- javascript閉包用法例項程式碼分析JavaScript
- javascript 物件合併程式碼例項簡單分析JavaScript物件
- javascript實現的簡單驗證碼效果程式碼例項JavaScript
- javascript獲取字串的hash值簡單程式碼例項JavaScript字串
- js微信視窗關閉事件簡單程式碼例項JS事件
- javascript名稱空間使用簡單程式碼例項JavaScript
- javascript判斷奇數簡單程式碼例項分享JavaScript
- 簡單介紹JavaScript閉包JavaScript
- 響應式佈局簡單程式碼例項
- javascript實現的圖片簡單切換程式碼例項JavaScript
- ul、li列表簡單實用程式碼例項
- javascript求餘和除法運算簡單例項程式碼JavaScript單例
- jQuery實現的簡單投票簡單程式碼例項jQuery
- javascript動態設定元素的樣式簡單程式碼例項JavaScript
- javascript關閉當前視窗例項程式碼JavaScript
- js選項卡簡單程式碼例項JS
- JavaScript 表單驗證程式碼例項JavaScript
- localStorage應用程式碼例項
- javascript的for in例項程式碼JavaScript
- javascript中的閉包概念簡單介紹JavaScript
- js簡單的留言功能程式碼例項JS
- javascript引用型別資料特點簡單程式碼例項JavaScript型別
- javascript顛倒陣列元素順序簡單程式碼例項JavaScript陣列
- javascript事件冒泡簡單例項JavaScript事件單例
- javascript this用法和簡單例項JavaScript單例
- 表單序列化應用程式碼相關程式碼例項
- js map集合簡單程式碼例項JS
- JSON簡單格式程式碼例項JSON
- jQuery表單驗證簡單程式碼例項jQuery
- javascript使用cookie記錄使用者資訊簡單程式碼例項JavaScriptCookie