flume案例:netcat-console
阿新 • • 發佈:2020-09-02
閉包定義
閉包就是能夠讀取其他函式內部變數的函式。例如在javascript中,只有函式內部的子函式才能讀取區域性變數,所以閉包可以理解成“定義在一個函式內部的函式“。在本質上,閉包是將函式內部和函式外部連線起來的橋樑。
閉包是由什麼構成
閉包=函式+詞法作用域
詞法作用域:即以變數宣告定義的位置為參照,如果當前位置沒有定義,就會訪問父級定義的位置
廣義上閉包:
var a=1000;
function fn1() {
alert(a)
}
fn1()
平時工作中用到的閉包狹義上閉包:
1.函式內巢狀函式
2.子函式引用了父函式的相關變數
特點:長期駐留記憶體
閉包應用場景和實現
//求和
function makeAdd(x) {
return function(y) {
return x+y
}
}
//設定字號
function setFontSize(size) {
return function() {
document.body.style.fontSize=size+"px"
}
}
//迴圈表單 function makeHelp(help) { return function() { console.log(help) document.querySelector('.help').innerHTML=help } } function init() { var userInfo=[ {id:'username',helpText:'請輸入使用者名稱'}, {id:'email',helpText:'請輸入郵箱'}, {id:'address',helpText:'請輸入地址'}, ] //動態繫結onfocus事件 for(var i=0;i<userInfo.length;i++) { var item=userInfo[i]; document.getElementById(item.id).onfocus=makeHelp(item.helpText) } } init()
//封裝元件或外掛 var Counter=(function() { //私有變數 var index=0; //私有方法 var add=function() { return index++; } var jian=function() { } return { //暴露出去供使用者的方法 increment:function() { add() }, getValue:function() { return index; } } })()
閉包優點和缺點
- 長期駐留記憶體,可以快取資料
- 可以隔離作用域,避免全域性汙染
小知識點
如何回答的一個技術記匯,或你對xxxx的理解
例如:你說一下對閉包的理解
答:
-
xxx是什麼
-
應用場景
-
優缺點
-
具體實現
-
5.還有沒有更好的解決方案!