การปิดใน JavaScript
ตอนนี้เรามาศึกษาแนวคิดเรื่อง การปิด (closure) กัน ที่จริงแล้วคุณ คุ้นเคยกับแนวคิดนี้อยู่แล้ว สิ่งที่เหลือคือเพียง เรียนรู้คำศัพท์ที่ถูกต้อง
ดังนั้น การปิดคือฟังก์ชันที่รวมกับ ตัวแปรภายนอกทั้งหมดที่สามารถเข้าถึงได้ หรือในคำอื่น ๆ การปิดคือฟังก์ชัน ที่รวมกับสภาพแวดล้อมของศัพท์ (lexical environment) ของมัน
ใน JavaScript ส่วนใหญ่ เมื่อพูดว่า "การปิด ของฟังก์ชัน" มักไม่ได้หมายถึงตัวฟังก์ชันนั้นเอง แต่หมายถึงตัวแปรภายนอกของมัน หากฟังก์ชัน ใด ๆ ได้รับตัวแปรจากสภาพแวดล้อมของศัพท์ ของตัวเอง จะพูดว่า "ตัวแปรนั้นถูกดึงมา จากการปิด"
ลองนึกถึงโค้ดที่เราทำในบทเรียน ก่อนหน้านี้:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // แสดงผล 1
ในกรณีนี้เราสามารถพูดได้ว่าฟังก์ชัน
func ได้รับค่าของตัวแปร
num มาจากการปิด นอกจากนี้ยังสามารถพูดได้ว่า
ฟังก์ชัน func เก็บค่าของตัวแปร
num ไว้ในการปิด