ในการประกาศตัวแปรใน JavaScript มี 2 ตัวเลือก: var หรือ let ความแตกต่างหลักคือ
Scope ของตัวแปรที่ประกาศด้วย let จำกัดอยู่ใน block ที่ประกาศ ในขณะที่ var มี global scope var เป็น keyword ที่กำหนดตัวแปรแบบ global ไม่สน block scope
Scope ของ let ไม่แค่จำกัดใน block ที่กำหนด แต่ตัวแปร let ยังไม่ถูกเพิ่มเข้า global window object แม้ประกาศนอก block ก็ตาม แต่เข้าถึง var จาก window object ได้ถ้าประกาศ global
เพราะ scope จำกัด let มักใช้เมื่อตัวแปรใช้จำกัด เช่นใน for loops, while loops, if conditions ส่วน var ใช้เมื่อค่าต้องการเข้าถึง global
อีกความแตกต่าง: var สามารถ redeclare ได้ แต let ไม่สามารถ redeclare ได้หากประกาศแล้ว
ตัวอย่างแสดงความแตกต่าง
let a = 'hello'; // globally scoped var b = 'world'; // globally scoped console.log(window.a); // undefined console.log(window.b); // 'world' var a = 'hello'; var a = 'world'; // No problem, 'hello' is replaced. let b = 'hello'; let b = 'world'; // SyntaxError: Identifier 'b' has already been declared