Kịch bản thuyết trình: Slides 28, 29, 30

Mình tiếp tục với slide 28, 29 và 30 về các từ khóa khai báo biến trong JavaScript.

JavaScript sử dụng các từ khóa như var, let, const để khai báo biến.

var (cũ, ít dùng)

var là cách cũ để khai báo biến trong JavaScript (có từ trước ES6).

Biến khai báo bằng varphạm vi trong function (không bị giới hạn bởi cặp {}).

Khi chạy chương trình, JS sẽ tự động đưa khai báo var lên đầu phạm vi trước khi chạy code (gọi là hoisting), nhưng giá trị mặc định ban đầu là undefined.

Ví dụ:

var city = "Ho Chi Minh";
console.log(city); // Ho Chi Minh

var có thể còn tồn tại và dùng được cả bên ngoài ngoặc {}, nên trong code hiện đại người ta ít dùng var, thay vào đó dùng let hoặc const.

let (mới, nên dùng)

let là từ khóa mới trong JavaScript (ra đời năm 2015, ES6), dùng để khai báo biến thay cho var. Nó khắc phục nhiều nhược điểm của var.

Phạm vi mà biến tồn tại và có thể được dùng trong chương trình (Scope):

  • Khi bạn khai báo biến bằng let, biến đó chỉ tồn tại bên trong cặp ngoặc { ... } nơi nó được khai báo.
  • Bước ra ngoài dấu { } thì biến đó không còn dùng được nữa.
  • Nếu dùng var, biến có thể còn tồn tại và dùng được cả bên ngoài ngoặc { }.

Ví dụ:

function demo() {
    var x = 1;  // var = function scope
    let y = 2;  // let = block scope
}
console.log(x); // 1
console.log(y); // Error

let chỉ có hiệu lực trong block { }, nên khi ra khỏi function (hoặc ngoài phạm vi khai báo), biến y không tồn tại nữa → gọi console.log(y) sẽ báo lỗi ReferenceError.

const (mới, nên dùng)

const là từ khóa dùng để khai báo biến hằng số trong JavaScript. Nghĩa là: một khi bạn gán giá trị cho biến đó, thì không thể thay đổi giá trị nữa.

Quy tắc khi dùng const:

  • Với const, bạn bắt buộc phải gán giá trị ngay khi khai báo. Nếu không sẽ báo lỗi.
  • Có block scope (phạm vi trong ngoặc {}). Tức là cũng giống như let, biến được khai báo bằng const chỉ tồn tại và sử dụng được bên trong cặp ngoặc { ... } nơi nó được khai báo. Ra ngoài ngoặc đó thì biến sẽ không còn tồn tại nữa.
  • Không thể tái khai báo (redeclare) hoặc gán lại (reassign).

Khi bạn khai báo biến bằng const, bạn không thể gán lại biến đó thành giá trị khác. Nhưng với Object hoặc Array, thì const:

  • Không thể gán lại biến, nghĩa là bạn không thể viết lại biến đó bằng một giá trị mới.
  • Nhưng có thể thay đổi nội dung bên trong (thêm, sửa, xóa).

Ví dụ:

function demo() {
    const x = 10;
    x = 20;  // ❌ Error: cannot reassign a const variable

    const arr = [1, 2, 3];
    arr[0] = 99;    // ✅ allowed: modify element inside array
    arr = [4, 5];   // ❌ Error: cannot reassign the whole array
}

Như vậy với const, mình không thể gán lại giá trị cho biến x, nhưng với array thì mình có thể thay đổi phần tử bên trong, chỉ không thể gán lại toàn bộ array mới.