Giới Thiệu

JavaScript cung cấp ba cách để khai báo biến: varlet và const. Mỗi cách khai báo có những đặc điểm riêng biệt và được sử dụng trong những hoàn cảnh khác nhau. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết về sự khác biệt giữa ba loại khai báo biến này.

var

Đặc Điểm

  • Khai báo biến toàn cục hoặc cục bộ theo phạm vi hàm.
  • Có thể được khai báo lại trong cùng một phạm vi.
  • Bị hoisted (đưa lên đầu phạm vi).
function exampleVar() {
    if (true) {
        var x = 10;
    }
    console.log(x); // 10
}

exampleVar();

Hoisting

Biến khai báo bằng var bị hoisted lên đầu phạm vi.

console.log(y); // undefined
var y = 5;

let

Đặc Điểm

  • Khai báo biến theo phạm vi khối lệnh (block scope).
  • Không thể khai báo lại trong cùng một phạm vi.
  • Bị hoisted nhưng không khởi tạo.
function exampleLet() {
    if (true) {
        let x = 10;
        console.log(x); // 10
    }
    console.log(x); // ReferenceError: x is not defined
}

exampleLet();

Hoisting

Biến khai báo bằng let bị hoisted nhưng không khởi tạo.

console.log(y); // ReferenceError: Cannot access 'y' before initialization
let y = 5;

const

Đặc Điểm

  • Khai báo biến theo phạm vi khối lệnh (block scope).
  • Không thể khai báo lại và không thể thay đổi giá trị sau khi khởi tạo.
  • Bị hoisted nhưng không khởi tạo.
function exampleConst() {
    const x = 10;
    x = 20; // TypeError: Assignment to constant variable.
}

exampleConst();

Hoisting

Biến khai báo bằng const bị hoisted nhưng không khởi tạo.

console.log(z); // ReferenceError: Cannot access 'z' before initialization
const z = 5;

Tổng Kết

Trong JavaScript, varlet và const có những cách hoạt động khác nhau về phạm vi, khả năng hoisted và tính tái định nghĩa. Hiểu rõ sự khác biệt này giúp chúng ta viết mã code hiệu quả hơn và tránh những lỗi không mong muốn trong quá trình lập trình.