91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在JavaScript中使用閉包

發布時間:2021-05-11 15:35:33 來源:億速云 閱讀:126 作者:Leah 欄目:web開發

這篇文章將為大家詳細講解有關怎么在JavaScript中使用閉包,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

JavaScript的作用是什么

1、能夠嵌入動態文本于HTML頁面。2、對瀏覽器事件做出響應。3、讀寫HTML元素。4、在數據被提交到服務器之前驗證數據。5、檢測訪客的瀏覽器信息。6、控制cookies,包括創建和修改等。7、基于Node.js技術進行服務器端編程。

理解閉包關鍵是理解JS的對象的本質以及垃圾收集機制。函數也是對象,也有屬性,通常執行一個函數時,局部變量在函數執行完后,內存會被回收,這是JS的垃圾收集機制決定的,如果想保存局部變量所占用的內存,就必須把保存在另一個不被回收的變量中,通常是全局變量。函數在創建時,內部屬性[[Scope]]保存了作用域鏈,作用域鏈中包含外部函數以及全局對象的變量,被稱為變量對象。所以把內部函數返回時,由于把函數保存了,所以內部屬性[[Scope]]所保存的變量對象也就保存了而沒有被回收,因此局部變量也就被保存了。

最簡單的閉包:

function f1() {
 var i = 0;
 return function () {
 var j = 0;
 i++;
 console.log(i,j);
 };
}
var fn = f1();
fn();//1 0
fn();//2 0

還有諸如給元素添加事件,事件函數保存著外部函數的變量,通過這個特性可以讓按鈕顯示被點擊次數。

當然可以創建多層閉包,最內部函數保存所有外部函數以及全局對象的變量,但并不是任何地方都用閉包,因為其始終都帶有[[Scope]]屬性,所有比較占內存,所以在需要的時候才用。

閉包在模塊化編程,為函數或對象創建私有變量的時候非常有用,可以避免全局污染以及變量命名沖突的問題。

值得注意的是因為[[Scope]]與函數有關,如上述例子,在兩次執行f1函數把返回的函數保存在不同的變量中,其外部函數的變量是互不影響的。如:

function f1() {
 var i = 0;
 return function () {
 var j = 0;
 i++;
 console.log(i,j);
 };
}
var fn = f1();
fn();//1 0
fn();//2 0
var fn1 = f1();
fn1();//1 0
fn(); //3 0
fn1();//2 0

關于怎么在JavaScript中使用閉包就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永州市| 裕民县| 东宁县| 宁武县| 奉节县| 喀什市| 汶川县| 华蓥市| 邛崃市| 穆棱市| 天全县| 罗源县| 康保县| 湘潭县| 河西区| 剑河县| 伊吾县| 日照市| 太白县| 木兰县| 阳新县| 嘉峪关市| 文水县| 汪清县| 叙永县| 仁化县| 昌吉市| 安新县| 承德县| 澄江县| 通城县| 甘南县| 波密县| 马尔康县| 盐源县| 慈溪市| 梅河口市| 卓尼县| 万宁市| 山阴县| 湘阴县|