1. 程式人生 > 實用技巧 >flume案例:netcat-console

flume案例:netcat-console

閉包定義

閉包就是能夠讀取其他函式內部變數的函式。例如在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.還有沒有更好的解決方案!