ในการเขียน JavaScript สมัยใหม่ ความแตกต่างระหว่าง `var`, `let`, และ `const` ในแง่ของ Scope และ Hoisting มีผลอย่างไรต่อพฤติกรรมโปรแกรม?

var และ let มี Block Scope เหมือนกัน ต่างกันที่ var Hoist ค่าเริ่มต้นเป็น 0 ไม่ใช่ undefined
var มี Function Scope และถูก Hoist พร้อม undefined, let/const มี Block Scope และถูก Hoist แต่อยู่ใน Temporal Dead Zone จนกว่าจะถึงบรรทัดประกาศ
var, let, const มี Scope เหมือนกันทุกอย่าง ต่างกันแค่ const ไม่สามารถเปลี่ยนค่าได้
let มี Global Scope, var มี Block Scope และ const ไม่ถูก Hoist เลย

เฉลยอธิบาย

var มี Function Scope (หรือ Global Scope) และ Hoisting ทำให้ตัวแปรถูกยกขึ้นบนสุดของ Function พร้อมค่า undefined ทำให้เกิด Bug ที่ไม่คาดคิดได้ ส่วน let และ const มี Block Scope ({}) และถูก Hoist เช่นกันแต่อยู่ใน Temporal Dead Zone (TDZ) คือไม่สามารถใช้งานได้ก่อนบรรทัดประกาศ จะเกิด ReferenceError ตัวเลือก A ผิดเพราะ Scope ต่างกัน, C ผิดทั้งหมด และ D ผิดเพราะ var มี Function Scope ไม่ใช่ Block Scope และ Hoist เป็น undefined ไม่ใช่ 0

ข้อสอบอื่นในวิชาหลักการพื้นฐานในการเขียนโปรแกรม และความรู้เกี่ยวกับ การพัฒนา Web Application เช่น PHP,HTML, JavaScript และเทคโนโลยีทางเว็บ

ดูข้อสอบวิชานี้ทั้งหมด →