閉包程式碼例項演示
分享一段程式碼例項,它演示了閉包的使用。
閉包本質上還是作用域和作用域鏈的問題,一個變數的作用域在其宣告的時候就已經確定,不會因為使用場所的不同而不同。
其實閉包這個概念完全可以不用出現,只要充分理解了作用域和作用域鏈就可以了,出現"閉包"這個稱謂反而加深了理解難度。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload = function () { var elements = document.getElementsByTagName('li'); var length = elements.length; for (var index = 0; index < length; index++) { elements[index].onclick = function (num) { return function () { alert(num); }; }(index); } } </script> </head> <body> <ul> <li>螞蟻部落一</li> <li>螞蟻部落二</li> <li>螞蟻部落三</li> <li>螞蟻部落四</li> </ul> </body> </html>
在上面的程式碼中,事件處理函式是是匿名函式的返回值(這個返回值是一個函式)。
這個匿名函式的引數是num(引數本質上就是在函式內宣告一個變數,為其傳遞引數,就是為這個變數賦值),傳遞index就相當於在函式內宣告一個變數num並賦值為index。匿名函式內部的匿名函式function () {alert(num);}是可以訪問到變數num,即便是此函式被返回充當事件處理函式,也是可以訪問變數num(變數的作用域是生命時候就確定的),其實閉包就是這麼回事。
相關文章
- javascript閉包簡單程式碼例項JavaScript
- javascript遞迴例項程式碼演示JavaScript遞迴
- javascript閉包的應用簡單程式碼例項JavaScript
- css清除浮動程式碼例項演示CSS
- HTML5 localStorage使用演示程式碼例項HTML
- javascript閉包用法例項程式碼分析JavaScript
- JS作用域與閉包--例項JS
- javascript閉包的理解和例項JavaScript
- python閉包詳解(例項)Python
- css3 filter屬性作用演示程式碼例項CSSS3Filter
- jQueryAjax例項演示jQuery
- JavaScript N種閉包演示JavaScript
- 閉包用法結合例項詳解
- javascript關閉當前視窗例項程式碼JavaScript
- js微信視窗關閉事件簡單程式碼例項JS事件
- js倒數計時關閉頁面程式碼例項JS
- 演示中斷處理的例項(例項六)(轉)
- 關閉瀏覽器視窗彈出提示程式碼例項瀏覽器
- jQuery is() 程式碼例項jQuery
- js通過例項介紹關於閉包的用法JS
- MySQL碎片整理小節--例項演示MySql
- 如何使用低程式碼開發平臺快速建立一個應用 | 例項演示
- Ruby 中的閉包-程式碼塊
- jQuery選項卡例項程式碼jQuery
- 閉包學習 1--例項分析 ComposerStaticInitxx::getInitializer
- dom操作程式碼例項
- javascript的for in例項程式碼JavaScript
- drag拖拽程式碼例項
- requestAnimationFrame()動畫例項程式碼requestAnimationFrame動畫
- $$和||使用程式碼例項
- js刮刮樂程式碼例項JS
- canvas刮刮樂程式碼例項Canvas
- css梯形程式碼例項CSS
- toJSON()程式碼例項JSON
- [轉]BDB例項程式碼
- IOS程式碼例項區iOS
- Spark閉包 | driver & executor程式程式碼執行Spark
- js監聽鍵盤事件程式碼例項例項JS事件