Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

Self-Invoking Anonymous Functions (IIFE) ใน JavaScript คืออะไร

IIFE (Immediately Invoked Function Expression) หรือ Self-Executing Anonymous Function คือ ฟังก์ชันที่ถูกห่อด้วยวงเล็บและ เรียกใช้ทันทีที่นิยาม ช่วยสร้าง ขอบเขต (scope) แบบแยกต่างหาก ป้องกันการปนเปื้อนตัวแปรใน Global Scope

ไวยากรณ์

(function() {
  // โค้ดในนี้
})();

// หรือ
(function() {
  // โค้ด
}());

การทำงาน

  1. (function() { ... }) — คู่วงเล็บแรก แปลง Function Declaration ให้เป็น Function Expression
  2. () — คู่วงเล็บที่สอง เรียกใช้ฟังก์ชันทันที

ประโยชน์หลัก

  • Namespace Isolation: ตัวแปรภายในไม่รั่วไหลสู่ global
  • Avoid Global Pollution: ไม่สร้าง global variables
  • Module Pattern: พื้นฐานของ Module Pattern ก่อน ES6 Modules
  • Data Privacy: สร้าง private variables ได้ด้วย Closure

ตัวอย่างการใช้งานจริง

// Module Pattern ด้วย IIFE
var Counter = (function() {
  var count = 0; // private variable

  return {
    increment: function() { return ++count; },
    decrement: function() { return --count; },
    getCount: function() { return count; }
  };
})();

Counter.increment(); // 1
Counter.increment(); // 2
Counter.getCount();  // 2
// count ไม่เข้าถึงได้จากภายนอก

Arrow Function IIFE (ES6)

(() => {
  // code
})();

หมายเหตุ: ใน ES6+ ควรใช้ let/const และ ES Modules (import/export) แทน IIFE สำหรับการจัดการโมดูล