Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Khác biệt giữa var và let trong JavaScript

Đặc điểm var let
Scope Function-scoped (hoặc global) Block-scoped ({})
Hoisting Hoisted, init = undefined Hoisted nhưng **Temporal Dead Zone** — truy cập trước khai báo → ReferenceError
Redeclare Cho phép var x=1; var x=2; Cấm let x=1; let x=2; → SyntaxError
Global object var x=1 → window.x tồn tại let x=1 (global) → window.x = undefined
Loop closure Vấn đề classic: for(var i...) capture same i for(let i...) tạo binding mới mỗi iteration — fix closure

Ví dụ minh họa

let a = 'hello';  // global let
var b = 'world';  // global var
console.log(window.a); // undefined
console.log(window.b); // 'world'

var a = 'hello'; var a = 'world'; // OK
let b = 'hello'; let b = 'world'; // SyntaxError: Identifier 'b' has already been declared

Khuyến nghị: Mặc định dùng const, cần reassign mới dùng let. Tránh var trong code modern.