Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Mục đích của hàm tự thi hành (IIFE) trong JavaScript

Định nghĩa

IIFE (Immediately Invoked Function Expression) – hàm được định nghĩa và thực thi ngay lập tức.

Cú pháp phổ biến

(function() {
  // code riêng tư
})();

// Hoặc
(function() {
  // code
}());

// Arrow function (ES6)
(() => {
  // code
})();

Tại sao cần IIFE?

  1. Tạo scope riêng (trước ES6 không có block scope). Biến bên trong không lọt ra global.
  2. Tránh ô nhiễm global namespace.
  3. Đóng gói (encapsulation) logic khởi tạo, module pattern.
  4. Chạy code ngay mà không cần gọi tên hàm.

Ví dụ: Module pattern

var Counter = (function() {
  var count = 0; // private
  return {
    increment: function() { return ++count; },
    decrement: function() { return --count; },
    get: function() { return count; }
  };
})();

Counter.increment(); // 1
Counter.increment(); // 2
Counter.get();       // 2
// count không truy cập được từ ngoài

Hiện nay (ES6+)

  • let/const có block scope → ít cần IIFE cho biến cục bộ.
  • ES Modules (import/export) thay thế module pattern.
  • Vẫn dùng IIFE cho: script inline, benchmark, polyfill, code chạy ngay một lần.