js實例教程-關於js閉包的作用實例講解

发布时间:2018-11-23 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了js實例教程-關於js閉包的作用實例講解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小寶典致力於為廣大程序猿(媛)提供高品質的代碼服務,請大家多多光顧小站,小寶典在此謝過。

在JS中,閉包是一個重點,也是一個難點。因為閉包對像JAVA這類語言的coder會覺得很生澀難懂,對初學的js的coder會感到難以理解,在這根據自己對閉包的一些淺顯的理解分享出來。若有不對的地方,望多多包含。

閉包

閉包,指的是在函數里的函數。(其實閉包就是被嵌套的那個函數)

 function closeBag(){     function(){} // 這個匿名函數就是一個閉包 } 

了解了什麼是閉包之後,來認識一下閉包的作用。

作用一:獲取函數內部的局部變量並將其駐留在內存中

在JS中有函數作用域,在函數內通過VAR定義的變量,外部作用域無法直接獲取。既然只是外部作用域無法獲取。那麼,它的子作用域便可以獲取到,我們想將這個局部變量返回到外部作用域,那麼便可以通過閉包完成該傳遞。

在這有人就會疑惑,如果只是需要獲取函數內部的局部變量,直接將需要的局部變量return不就可以拿到了嗎?的確,若只是需要獲取局部變量,的確可以通過這種方式。但如果要實現計數功能,那麼閉包使局部變量駐留在內存中的作用便顯現了出來。

 function closeBag2(){         var num = 22;         // 通過閉包將舉報變量返回到外部作用域         return function() {             return num++;         }     }      var num = closeBag2();      console.LOG(num()); // 22     console.log(num()); // 23     console.log(num()); // 24     console.log(num()); // 25 

作用二:封閉作用域

通過自調用函數形成一個封閉作用域(相當於JAVA的塊級作用域),在該封閉作用域內,定義的變量和函數都是私有的,全局作用域並不能直接訪問,但可以通過返回一個對象來獲取該封閉作用域里的方法或變量。通常,我們利用這種封閉作用域來封裝一些我們常用的方法庫。

自調用函數寫法: (function(){})()

 封裝庫例子: var utils = (function(){         function add(){}         function mul(){}         function sub(){}          return {             add: add,             mul: mul,             sub: sub         }     })(); 

以上是我對閉包的淺顯的理解,希望有大神指出我的不足和對閉包知識點的補充,萬分感謝。

在JS中,閉包是一個重點,也是一個難點。因為閉包對像JAVA這類語言的coder會覺得很生澀難懂,對初學的js的coder會感到難以理解,在這根據自己對閉包的一些淺顯的理解分享出來。若有不對的地方,望多多包含。

閉包

閉包,指的是在函數里的函數。(其實閉包就是被嵌套的那個函數)

 function closeBag(){     function(){} // 這個匿名函數就是一個閉包 } 

了解了什麼是閉包之後,來認識一下閉包的作用。

作用一:獲取函數內部的局部變量並將其駐留在內存中

在JS中有函數作用域,在函數內通過var定義的變量,外部作用域無法直接獲取。既然只是外部作用域無法獲取。那麼,它的子作用域便可以獲取到,我們想將這個局部變量返回到外部作用域,那麼便可以通過閉包完成該傳遞。

在這有人就會疑惑,如果只是需要獲取函數內部的局部變量,直接將需要的局部變量return不就可以拿到了嗎?的確,若只是需要獲取局部變量,的確可以通過這種方式。但如果要實現計數功能,那麼閉包使局部變量駐留在內存中的作用便顯現了出來。

 function closeBag2(){         var num = 22;         // 通過閉包將舉報變量返回到外部作用域         return function() {             return num++;         }     }      var num = closeBag2();      console.log(num()); // 22     console.log(num()); // 23     console.log(num()); // 24     console.log(num()); // 25 

作用二:封閉作用域

通過自調用函數形成一個封閉作用域(相當於JAVA的塊級作用域),在該封閉作用域內,定義的變量和函數都是私有的,全局作用域並不能直接訪問,但可以通過返回一個對象來獲取該封閉作用域里的方法或變量。通常,我們利用這種封閉作用域來封裝一些我們常用的方法庫。

自調用函數寫法: (function(){})()

 封裝庫例子: var utils = (function(){         function add(){}         function mul(){}         function sub(){}          return {             add: add,             mul: mul,             sub: sub         }     })(); 

以上是我對閉包的淺顯的理解,希望有大神指出我的不足和對閉包知識點的補充,萬分感謝。

覺得可用,就經常來吧!Javascript技巧 腳本寶典 歡迎評論哦! js技巧,巧奪天工,精雕玉琢。小寶典獻醜了!

脚本宝典总结

以上是脚本宝典为你收集整理的js實例教程-關於js閉包的作用實例講解全部内容,希望文章能够帮你解决js實例教程-關於js閉包的作用實例講解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。