闭包模式

Closures

function counter() { let n = 0; return () => ++n; }Private state via closure
const inc = counter(); inc(); // 1, inc(); // 2Usage

Module Pattern

const mod = (() => { let private = 0; return { get: () => private, set: v => private=v }; })();IIFE module pattern

Common Pitfalls

// Problem with var in loop: for (var i = 0; i < 3; i++) setTimeout(() => console.log(i), 0)Logs 3,3,3 (captures same i)
// Fix with let: for (let i = 0; i < 3; i++) setTimeout(() => console.log(i), 0)Logs 0,1,2 (block scope)
// Or with IIFE: for (var i = 0; i < 3; i++) ((j) => setTimeout(() => console.log(j), 0))(i)IIFE fix for var loop