1. 程式人生 > 實用技巧 >KMP模式匹配

KMP模式匹配

什麼是匿名函式?

匿名函式就是沒有真正名字的函式,可以用一個立即執行的匿名函式建立一個塊級作用域,匿名函式執行完畢後,儲存在記憶體中的相應變數會被銷燬,從而節省記憶體。並且在大型多人開發的專案中,塊級作用域可以減少變數命名衝突。匿名函式還可以實現閉包,如下:

function fn(num){
      let Arr = [];
      for(let i=0;i<num;++i) {
            Arr.push(function() {
                console.log(`我是第${i}`);
            });                       
      }
    return Arr;
}
let aa = fn(5);

什麼是閉包

閉包指可以訪問到外部函式內部變數的函式,正常函式執行完畢後,裡面宣告的變數被垃圾回收處理掉,但是閉包可以讓作用域裡(外部函式)的變數和引數,在函式執行完後,記憶體不會被釋放。閉包可以當做返回值被函式返回,也可以當做引數傳入函式中,應該儘量避免使用閉包,會增大記憶體使用量,使用不當很容易造成記憶體洩露。

Event Loop

Event Loop是一種執行機制,js採用這種機制來解決單執行緒執行帶來的一些問題。js是單執行緒,主要用途是與使用者的互動以及操作DOM。js中所有任務分為同步和非同步兩種,同步任務在主執行緒上排隊執行,只有前一個任務執行完才會執行下一個,非同步任務不進入主執行緒、而進入"任務佇列"(task queue),只有"任務佇列"通知主執行緒,某個非同步任務可以執行了,該任務才會進入主執行緒執行。