Biến và Kiểu Dữ Liệu trong JavaScript

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 6 tháng 3, 2025

Biến (variable) là khái niệm quan trọng trong mọi ngôn ngữ lập trình, giúp lưu trữ và thao tác dữ liệu. JavaScript cung cấp nhiều kiểu dữ liệu khác nhau để xử lý thông tin một cách linh hoạt.

Trong bài học này, chúng ta sẽ tìm hiểu:

  • Cách khai báo biến bằng var, let, const và sự khác nhau giữa chúng.
  • Các kiểu dữ liệu nguyên thủy như Number, String, Boolean, Null, Undefined, Symbol, BigInt.
  • Các kiểu dữ liệu tham chiếu như Object, Array, Function.
  • Cách kiểm tra kiểu dữ liệu bằng typeof.

Biến và Kiểu Dữ Liệu trong JavaScript

1. Giới thiệu về biến: var, let, const

Trong JavaScript, biến được khai báo bằng var, let, hoặc const.

Sử dụng var (cách cũ, không nên dùng nữa)

  • varphạm vi function scope (tồn tại trong toàn bộ function chứa nó).
  • Có thể khai báo lại trong cùng một phạm vi.
  • hoisting (di chuyển khai báo biến lên đầu phạm vi).

Ví dụ với var

var name = "Alice";
console.log(name); // Alice

var name = "Bob"; // Không lỗi khi khai báo lại
console.log(name); // Bob

Hạn chế của var:

  • Có thể khai báo lại, dễ gây lỗi logic.
  • Không có block scope, dẫn đến lỗi khi dùng trong vòng lặp.

Sử dụng let (nên dùng)

  • letphạm vi block scope (chỉ tồn tại trong cặp {} chứa nó).
  • Không thể khai báo lại trong cùng một phạm vi.
  • Có thể gán lại giá trị.

Ví dụ với let

let age = 25;
console.log(age); // 25

age = 30; // Được phép gán lại giá trị
console.log(age); // 30

// let age = 35; Lỗi: Không thể khai báo lại biến đã tồn tại

Ưu điểm của let:

  • An toàn hơn var vì không thể khai báo lại trong cùng một phạm vi.
  • Có block scope giúp tránh lỗi khi sử dụng trong vòng lặp.

Sử dụng const (dùng cho giá trị không đổi)

  • constphạm vi block scope như let.
  • Không thể gán lại giá trị sau khi khai báo.

Ví dụ với const

const pi = 3.14;
console.log(pi); // 3.14

// pi = 3.1415;  Lỗi: Không thể gán lại giá trị cho biến const

Khi nào dùng const?

  • Khi bạn chắc chắn giá trị không thay đổi, như hằng số.
  • Khi khai báo mảng, đối tượng, nhưng có thể thay đổi nội dung bên trong.

Ví dụ với const chứa mảng hoặc đối tượng

const numbers = [1, 2, 3];
numbers.push(4); // Hợp lệ vì thay đổi nội dung bên trong
console.log(numbers); // [1, 2, 3, 4]

// numbers = [5, 6, 7]; Lỗi: Không thể gán lại toàn bộ mảng

Tóm tắt sự khác nhau

Loại biến Phạm vi Có thể khai báo lại? Có thể gán lại giá trị?
var Function scope
let Block scope Không
const Block scope Không Không

2. Kiểu dữ liệu nguyên thủy trong JavaScript

JavaScript có 7 kiểu dữ liệu nguyên thủy (Primitive Types):

Kiểu dữ liệu Mô tả Ví dụ
Number Số nguyên, số thực let x = 10;
String Chuỗi ký tự let name = "Alice";
Boolean Giá trị đúng/sai let isStudent = true;
Null Giá trị rỗng let a = null;
Undefined Biến chưa có giá trị let b;
Symbol Giá trị duy nhất, tránh trùng lặp let sym = Symbol('id');
BigInt Số lớn hơn 2^53-1 let big = 12345678901234567890n;

Ví dụ minh họa

let num = 42; // Number
let str = "Hello"; // String
let isTrue = true; // Boolean
let empty = null; // Null
let notDefined; // Undefined
let uniqueId = Symbol("id"); // Symbol
let bigNumber = 9007199254740991n; // BigInt

3. Kiểu dữ liệu tham chiếu (Reference Types)

Các kiểu dữ liệu tham chiếu gồm Object, Array, Function, lưu trữ tham chiếu đến giá trị thay vì giá trị trực tiếp.

1. Object (Đối tượng)

let person = { name: "Alice", age: 25 };
console.log(person.name); // Alice

2. Array (Mảng)

let numbers = [1, 2, 3, 4];
console.log(numbers[0]); // 1

3. Function (Hàm)

function greet() {
    return "Hello!";
}
console.log(greet()); // Hello!

Lưu ý quan trọng:

  • Biến chứa giá trị nguyên thủy lưu trực tiếp giá trị.
  • Biến chứa giá trị tham chiếu lưu địa chỉ tham chiếu đến vùng nhớ.

Ví dụ: Tham chiếu trong Object

let obj1 = { name: "Alice" };
let obj2 = obj1;

obj2.name = "Bob";
console.log(obj1.name); // Bob (do obj1 và obj2 cùng tham chiếu đến một vùng nhớ)

4. Kiểm tra kiểu dữ liệu với typeof

typeof giúp kiểm tra kiểu dữ liệu của biến:

console.log(typeof 42); // "number"
console.log(typeof "Hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof {}); // "object"
console.log(typeof []); // "object" (mảng cũng là object)
console.log(typeof function(){}); // "function"
console.log(typeof null); // "object" (đây là lỗi của JavaScript)
console.log(typeof undefined); // "undefined"

Kết luận

  • Biến trong JavaScript có thể khai báo bằng var, let, const, trong đó letconst được ưu tiên hơn.
  • JavaScript có 7 kiểu dữ liệu nguyên thủy và 3 kiểu tham chiếu.
  • Dùng typeof để kiểm tra kiểu dữ liệu.
Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ