การปิดใน JavaScript
ในฟังก์ชัน JavaScript เป็นบล็อกของโค้ดที่ออกแบบมาเพื่อทำงานเฉพาะ มันทำงานเมื่อคุณเรียกใช้
ตัวอย่างเช่น:
function myFunction(message){
console.log(message)
}
myFunction("Hello there!!")
myFunction("Welcome, boss")
แต่ถ้าเราต้องการทราบว่าเกิดอะไรขึ้นในการดำเนินการครั้งแรกหรือครั้งก่อน นั่นคือที่มาของการปิด
การปิดคืออะไร?
พูดง่ายๆ เมื่อฟังก์ชันส่งกลับฟังก์ชันอื่น ซึ่งเข้าถึงขอบเขตฟังก์ชันภายนอกได้ จะเรียกว่าการปิดใน JavaScript
ตัวอย่างเช่น:
function outer (){
let counter = 0;
function inner (){
counter++;
return counter;
}
return inner
}
const result = outer()
function inner (){
counter++;
return counter;
}
ดังนั้น JavaScript จำcounterค่าก่อนหน้าและทำการคำนวณทางคณิตศาสตร์
คุณอาจถามว่า Js ทำอย่างนั้นได้อย่างไร ?
เมื่อฟังก์ชันส่งคืนฟังก์ชัน ฟังก์ชันจะไม่ส่งคืนเฉพาะฟังก์ชันเท่านั้น แต่ยังส่งคืนขอบเขตคำศัพท์ของฟังก์ชันนั้นด้วย ตัวแปร ข้อมูลทั้งหมดที่เกี่ยวข้องกับฟังก์ชันที่ส่งคืนนั้นเป็นคุณสมบัติที่ซ่อนอยู่พร้อมกับฟังก์ชันที่ส่งคืนนั้น ที่ซ่อนทรัพย์ก็เรียกBackpack
กระเป๋าเป้สะพายหลังนี้มีหลายชื่อ:
- ปิดเหนือ 'Variable Environment' (COVE)
- ข้อมูลอ้างอิงขอบเขตคำศัพท์ถาวร (PLSRD)
- กระเป๋าเป้สะพายหลัง
- ปิด
ลองดูตัวอย่างอื่น:
function outer (){
let counter = 0;
function inner (){
counter++;
return counter;
}
return inner
}
const result = outer()
result() // 1
result() // 2
const anotherResult = outer()
anotherResult() // 1
anotherResult() // 2
ทำไมถึงปิด:
- ช่วยให้เราสร้างฟังก์ชันตัวช่วยที่เปิดใช้งานฟังก์ชันที่ทรงพลัง เช่นครั้งเดียวและบันทึกช่วยจำ
- ช่วยเราในการสร้างIteratorsและGeneratorsโดยใช้ขอบเขตคำศัพท์และการปิด
- รูปแบบการออกแบบ JavaScript จำนวนมากรวมถึงการปิดการใช้งานรูปแบบโมดูล โดยการรักษาสถานะสำหรับแอปพลิเคชันโดยไม่ทำให้เนมสเปซส่วนกลางเสียหาย
- การโทรกลับและสัญญาขึ้นอยู่กับการปิดเพื่อคงสถานะในโลก JavaScript แบบอะซิงโครนัส





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)