OOP languages ให้ data hiding ด้วย private fields ซ่อน internal ของ classes ใน JS ไม่มี built-in support สำหรับ encapsulation
Anonymous functions ให้ encapsulation ใน JS มาดูตัวอย่าง
ตัวอย่าง
const HIDDEN_CONST = 100; function fnWeWantToHide(x, y) { return (x + y) * HIDDEN_CONST } console.log(fnWeWantToHide(1, 2))เขียนแบบนี้ใน global scope จะ pollute namespace ด้วยชื่อเหล่านี้ แทนที่จะทำแบบนั้น ให้ wrap ใน IIFE (Immediately Invoked Function Expression)
ตัวอย่าง
(() => { const HIDDEN_CONST = 100; function fnWeWantToHide(x, y) { return (x + y) * HIDDEN_CONST } console.log(fnWeWantToHide(1, 2)) })()ตอนนี้ variables ซ่อนอยู่ใน functional expression แต่อยู่ใน global namespace แล้ว