1.2.3.16.框架小叮嚀:IIFEs 與安全程式碼

  • 執行一段程式碼:

    • 行1: 全域執行環境 (global Execution context)的記憶體會空出greeting的位置,並賦值 (greeting: 'Hola')

    • 行2 ~ 5: 括號被呼叫而建立一個新的執行環境, 記憶體會空出greeting的位置,並賦值 (greeting: 'Hello')

      1 var greeting = 'Hola';
      2 (function (name) {
      3    var greeting = 'Hello';
      4    console.log(greeting + ' ' + name);
      5 }('John'));
    • 可以發現兩個greeting不相衝突

    • 因此IIFE可以確保裡面的程式碼不會與其他東西衝突, 保障其安全, 因此在很多的函式庫中都會大量使用IIFE

  • 如果想在IIFE中取用全域變數呢?

    • 傳入全域變數的參考

      var greeting = 'Hola';
      
      (function (global, name) {
       var greeting = 'Hello';
       console.log(greeting + ' ' + name);
      }(window, 'John'));

Last updated