ขอบเขตใน Javascript
หากเราต้องการซื้อสินค้าจาก Amazon ที่ไม่มี คุณไม่สามารถซื้อสินค้าได้เนื่องจาก Amazon สามารถขายสินค้าที่อยู่ในสินค้าคงคลังได้ เราต้องหาร้านอื่นเพื่อซื้อสินค้า
ในการเขียนโปรแกรม แนวคิดนี้เรียกว่าขอบเขต (ในทางเทคนิคเรียกว่าขอบเขตคำศัพท์) ใน Javascript แต่ละฟังก์ชันจะได้รับขอบเขต ขอบเขตคือชุดของตัวแปรตลอดจนกฎเกี่ยวกับวิธีการเข้าถึงตัวแปรเหล่านี้ด้วยชื่อ
ตัวแปรควรไม่ซ้ำกันภายในขอบเขต แต่ชื่อเดียวกันอาจปรากฏในขอบเขตที่ต่างกันได้
function one(){ // This 'a' only belongs to 'one()' function var a = 10; console.log(a) } function two(){ // This 'a' only belongs to 'two()' function var a = 20; console.log(b) } one(); // 10 two(); // 20
นอกจากนี้ ขอบเขตยังสามารถซ้อนอยู่ภายในขอบเขตอื่นได้ หากขอบเขตหนึ่งซ้อนอยู่ภายในขอบเขตอื่น ขอบเขตด้านในสุดจะสามารถเข้าถึงตัวแปรจากขอบเขตใดขอบเขตหนึ่งได้
function outer() { var a = 2; function inner() { var b = 5; // We can able access both 'a' and 'b' from here console.log(a + b) } inner() // 7 // Can only able to access 'a' console.log(a) // 2 }
กฎขอบเขตคำศัพท์บอกว่าโค้ดในขอบเขตหนึ่งสามารถเข้าถึงตัวแปรในขอบเขตนั้นหรือขอบเขตภายนอกใดๆ ได้ ดังนั้นโค้ดภายในฟังก์ชัน inner()จึงสามารถเข้าถึงทั้งตัวแปร 'a' และ 'b' แต่โค้ดใน outside() มีสิทธิ์เข้าถึงเพียง 'a' เท่านั้น