นิยาม
Block Statement (หรือ Compound Statement) คือการจัดกลุ่มคำสั่ง 0 ตัวขึ้นไปไว้ภายในวงเล็บปีกกา { } เพื่อให้ถูกมองว่าเป็นคำสั่งเดียว
Syntax
{
// รายการคำสั่ง (statements)
}
ขอบเขตตัวแปร (Scope) ใน Block
สำคัญ: ใน JavaScript แบบเก่า (ES5 และก่อนหน้า) การใช้ var ประกาศตัวแปรภายใน Block ไม่สร้าง Block Scope ตัวแปรจะมี Scope เหมือนกับที่ประกาศนอก Block (Function Scope หรือ Global Scope)
ตัวอย่างพฤติกรรมของ var
var a = 20;
{
var a = 40; // ตัวแปร a เดียวกันกับนอกบล็อก
}
document.write(a); // ผลลัพธ์: 40 (ไม่ใช่ 20)
โค้ดด้านบนพิมพ์ค่า 40 เพราะ var a = 40; ภายในบล็อกอ้างอิงตัวแปร a ตัวเดียวกับที่ประกาศนอกบล็อก
การเปลี่ยนแปลงใน ES6 (let/const)
ตั้งแต่ ES6 (ES2015) การใช้ let และ const จะสร้าง Block Scope จริงๆ:
let a = 20;
{
let a = 40; // ตัวแปร a ใหม่ แยกจากนอกบล็อก
console.log(a); // 40
}
console.log(a); // 20
กรณีการใช้งานทั่วไป
- รวมคำสั่งหลายคำสั่งใน
if,else,while,for,function - จำกัดขอบเขตตัวแปรชั่วคราว (ด้วย let/const)
- จัดกลุ่มโค้ดเพื่อความอ่านง่าย
สรุป
Block Statement ใช้จัดกลุ่มคำสั่ง ใน JavaScript แบบเดิม var ไม่เคารพ Block Scope แต่ let และ const (ES6+) เคารพ Block Scope อย่างแท้จริง