สภาพแวดล้อมทางศัพท์ของฟังก์ชันใน JavaScript
ตัวแปรภายนอกทั้งหมดที่ฟังก์ชันสามารถเข้าถึงได้ เรียกว่า สภาพแวดล้อมทางศัพท์ (LexicalEnvironment) ของฟังก์ชันนั้น
ในตัวอย่างต่อไปนี้ ฟังก์ชันสามารถเข้าถึงตัวแปรสองตัว:
num1 และ num2 ซึ่ง
เป็นสภาพแวดล้อมทางศัพท์ของฟังก์ชันของเรา:
let num1 = 1;
let num2 = 2;
function func() {
// ฟังก์ชันรู้เกี่ยวกับตัวแปร num1 และ num2
}
สภาพแวดล้อมทางศัพท์เองนั้นเป็น วัตถุภายในบางอย่างของ JavaScript ที่เชื่อมโยง กับฟังก์ชันของเรา ในกรณีนี้สามารถ นำเสนอได้ในรูปแบบต่อไปนี้:
{num1: 1, num2: 2}
ค่าของตัวแปรใด ๆ ในสภาพแวดล้อมทางศัพท์ จะเท่ากับค่าปัจจุบันของตัวแปรนั้นเสมอ:
let num1 = 1; // สภาพแวดล้อม {num1: 1}
let num2 = 2; // สภาพแวดล้อม {num1: 1, num2: 2}
// เปลี่ยนตัวแปร num1:
num1 = 123; // สภาพแวดล้อม {num1: 123, num2: 2}
function func() {
}
เมื่อเราพยายามเข้าถึงตัวแปรใด ๆ ภายในฟังก์ชัน ตัวแปรนั้น จะถูกค้นหาครั้งแรกในกลุ่มตัวแปรท้องถิ่น ของฟังก์ชัน และหากไม่พบตัวแปรดังกล่าวที่นั่น ก็จะถูกค้นหาในสภาพแวดล้อมทางศัพท์ของฟังก์ชัน