閉包(英文:closure)
1. 閉包是乙個函式與作用域環境(即詞法環境)形成的閉包**
2. 閉包的理解:
廣義的閉包:1.函式 2.這個函式能訪問到函式外部的狀態(也稱函式外部的變數)
並不是我們平時理解的閉包:函式巢狀函式,並且內部函式通過return返回到外部,外部可以訪問內部函式的變數
總結:閉包=函式+自由變數
自由變數:即可以是外部的變數,也可是父級函式的形參
閉包特點:
閉包中自由變數長期駐留記憶體,長期駐留記憶體中的變數如果處理不當,會導致記憶體洩露,不用的話要將閉包置為null
可以隔離作用域,模擬塊級作用域
自由變數:就是在函式外部定義的,並且在函式內部可以訪問到的變數就叫自由變數
3.具體講一下閉包的實際應用舉例
作用域鏈:通過在當前函式內部查詢要訪問的變數,如果有則訪問,沒有則向上一級查詢此變數,上級有則訪問之,沒有再再往上上一級查詢,以此類推,直到找到全部window下有沒有,有則訪問,沒有些報錯
是否有點像原型鏈的查詢呢????非常像
實用案例:
1.計數器
//功能:遞增,遞減,獲取遞增或遞減之後的值
var counter=function()
return ,
//減decrement:function() ,
//獲取值
getvalue:function()
}}
2.改變頁面字型大小
function setsize(size)
}var size12=setsize(12);
var size40=setsize(40)
var size50=setsize(50);
3.定時器累加
//要求每隔1秒列印1,2,3,…10
//settimeout是非同步執行的,非同步佇列
for(var i=1;i<=10;i++) ,2000*j)
})(i)
} console.log('最後列印:',i)
for(let i=1;i<=10;i++) ,1000*i)
}
4.封裝元件:
立即呼叫函式
(function(win,doc)
})(window,document)
js 中的閉包
先理解 js 中的執行環境 閉包按中文的意思就是關上乙個包的意思。如果我們把函式的變數物件當做是乙個包的話,那這個詞很形象體現了它的作用 函式被呼叫時會建立它的執行環境,函式語句執行完後程式會自動銷毀這個函式的執行環境,但是當乙個函式中宣告了另乙個函式 子函式 並且如果存在對這個子函式引用,就會形成...
js 中的閉包
閉包 閉包是指有權訪問另乙個函式作用域中的變數的函式,建立閉包的常見方式是 在乙個函式內部建立另乙個函式 從定義上講 js 中所有的函式都是閉包 function a returnb var c a c 以上 的特點 1 函式b巢狀在函式a內部 2 函式a返回函式b。當函式a的內部函式b被函式a外的...
JS中的閉包(Closure)
閉包是指有權訪問另乙個函式作用域中的變數的函式。最常見的就是在乙個函式內部建立另外乙個函式。以trialfunction 函式為例 function trialfunction property else if a1 b1 else 上述 中,內部函式訪問了外部函式中的變數property。即使這個...