1.2.3.15.立即呼叫的函數表示式(IIFEs)

  • 複習前面所提過的函式陳述句, JavaScript engine看到函數時會將牠放到記憶體中, 但是在呼叫時才會執行

    • 寫法如下:

        greet('John');
        function greet(name) {
            console.log('Hello ' + name);
        }
  • 函數表達式, 一開始不會被放到記憶體中, 直到執行這行時, JavaScript engine會立即創造這個物件

    • 寫法如下:

      var greetFunc = (name) {
            console.log('Hello ' + name);
        }
      greetFunc('John');
  • 立即呼叫的函數表達式 (immediately invoked function expression, IIFE)

    • 在函數創造後立即呼叫, 寫法如下:

      var greeting = function(name) { 
        return Hello ' + name; 
      }('John');
      
      console.log(greeting);
  • 當想要一個函式陳述句, 但又不使用函式陳述句的寫法

    • 因為在括號內的東西一定要是陳述式

      // 不會執行
      (function (name) {
        return 'Hello ' + name;
      });
      
      //IIFE
      (function (name) {
        console.log('Hello ' + name);
      }('John'));
      
      //或這樣寫
      (function (name) {
        console.log('Hello ' + name);
      })('John');

Last updated