mysql閉包錶應用場景 閉包的理解和應用場景

2021-10-17 22:16:37 字數 1150 閱讀 4624

1.什麼是閉包??

在了解閉包之前,我們要清楚js的另乙個知識,那就是作用域鏈。什麼是作用域鏈,比如乙個函式裡面包含著另乙個函式,裡面的函式在使用乙個變數的時候會在函式自己的作用域內去查詢這個變數,如果沒有,就會沿著作用域鏈向上級函式的作用域去查詢,這樣的乙個過程我們就叫做作用域鏈。

作用域鏈是可以有函式內部向外部去查詢使用需要的變數,但是無法從上到下去查詢函式內部的變數,所以這時候就出現了閉包,閉包就是解決這一問題。簡單來說,閉包就是乙個可以訪問另乙個函式內部變數的函式。

1 functionf1()7 returnf28 }9 var temp =f1()10 temp() //200

在上述**中建立了乙個函式f1(),並在其內部建立了乙個函式f2(),在正常情況下,在f2中可以訪問f1中的變數n,但是f1不能訪問f2中定義的變數,但是通過return將f2作為引數返回給f1,通過f2閉包來建立起與f1的聯絡,這樣就可以訪問f1中的變數

例子2.

var aaa = (function()functionccc()return,1000)的時候,第乙個引數是乙個函式,或者是一段執行的js**,第二引數是第乙個引數執行的時間間隔。

當我們需要往第乙個引數(這裡針對第乙個引數是乙個函式的情況)是乙個函式,需要往這個哈數傳遞引數的時候,這時就可以使用閉包:

1 functionf1(name) 6 returnf27 }8 var arr = [1, 2]9 for (let i = 0; i < arr.length; i++)

上述**輸出結果為:1,2

閉包應用場景之封裝變數:

1 var counter = (function()6 return,12 decrement:function(),17 value:function()20 };21 })();22

23 console.log(counter.value());//0

24 counter.increment();//1

25 counter.increment();//2

閉包總結:

1.閉包是乙個可以訪問另乙個函式內部變數的函式

2.一般的函式在使用完後,內部的變數會被**,而閉包不會,變數依舊存在於記憶體中,不會消失。

3.頻繁的使用閉包會占用記憶體,降低cpu效能,但是可以釋放記憶體(在使用完閉包後,手動使變數為null)

JS閉包 及閉包的應用場景

閉包 如大家所知,通俗講,可以訪問其他函式內部變數的函式 建立閉包最常見的方式函式作為返回值 function fn let log fn log 列印 小帆 外部函式訪問內部變數 下面來實現乙個簡單的demo 計數器 var number 0 function creat creat 確實實現了需...

js閉包的應用場景

js閉包的應用場景 本質 js中沒有私有變數,而閉包是是一種保護私有變數的機制,保護裡面的私有變數不受外界干擾。閉包的演進過程 統計網頁訪問的次數 1.常規方式 var counter 0 function add add add add 計數器現在為 3存在問題 任何地方都可以直接訪問counte...

閉包的應用場景二

閉包的應用場景一 閉包的應用場景二 閉包的應用場景三 閉包的應用場景 1.使用閉包代替全域性變數 2.函式外或在其他函式中訪問某一函式內部的引數 3.在函式執行之前為要執行的函式提供具體引數 4.在函式執行之前為函式提供只有在函式執行或引用時才能知道的具體引數 5.為節點迴圈繫結click事件,在事...