ขอบเขตใน 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' เท่านั้น