สภาพแวดล้อมทางศัพท์ของฟังก์ชันใน JavaScript

ตัวแปรภายนอกทั้งหมดที่ฟังก์ชันสามารถเข้าถึงได้ เรียกว่า สภาพแวดล้อมทางศัพท์ (LexicalEnvironment) ของฟังก์ชันนั้น

ในตัวอย่างต่อไปนี้ ฟังก์ชันสามารถเข้าถึงตัวแปรสองตัว: num1 และ num2 ซึ่ง เป็นสภาพแวดล้อมทางศัพท์ของฟังก์ชันของเรา:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // ฟังก์ชันรู้เกี่ยวกับตัวแปร num1 และ num2
}

สภาพแวดล้อมทางศัพท์เองนั้นเป็น วัตถุภายในบางอย่างของ JavaScript ที่เชื่อมโยง กับฟังก์ชันของเรา ในกรณีนี้สามารถ นำเสนอได้ในรูปแบบต่อไปนี้:

javascript{num1: 1, num2: 2}

ค่าของตัวแปรใด ๆ ในสภาพแวดล้อมทางศัพท์ จะเท่ากับค่าปัจจุบันของตัวแปรนั้นเสมอ:

javascriptlet num1 = 1; // สภาพแวดล้อม {num1: 1}
let num2 = 2; // สภาพแวดล้อม {num1: 1, num2: 2}

// เปลี่ยนตัวแปร num1:
num1 = 123; // สภาพแวดล้อม {num1: 123, num2: 2}

function func() {
  
}

เมื่อเราพยายามเข้าถึงตัวแปรใด ๆ ภายในฟังก์ชัน ตัวแปรนั้น จะถูกค้นหาครั้งแรกในกลุ่มตัวแปรท้องถิ่น ของฟังก์ชัน และหากไม่พบตัวแปรดังกล่าวที่นั่น ก็จะถูกค้นหาในสภาพแวดล้อมทางศัพท์ของฟังก์ชัน