การปิดใน JavaScript

Mar 07 2023
ในฟังก์ชัน JavaScript เป็นบล็อกของโค้ดที่ออกแบบมาเพื่อทำงานเฉพาะ มันทำงานเมื่อคุณเรียกใช้
การปิดใน 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 แบบอะซิงโครนัส