脚本宝典收集整理的这篇文章主要介绍了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,请注明来意。