[JS Basics] Câu lệnh điều kiện trong JavaScript: Ví dụ & cách dùng hiệu quả

Hãy tưởng tượng bạn đang đứng ở một ngã tư đường. Bạn có thể đi thẳng, rẽ trái, hoặc rẽ phải. Quyết định của bạn phụ thuộc vào nơi bạn muốn đến. Trong lập trình, mã của bạn cũng liên tục phải "đưa ra quyết định" như vậy. Nó cần một cách để thực thi những hành động khác nhau dựa trên các điều kiện khác nhau. Đó chính là lúc câu lệnh điều kiện (conditional statements) tỏa sáng. 🚦

Câu lệnh điều kiện trong JavaScript

Đây là "bộ não" của chương trình, cho phép nó trở nên linh hoạt, thông minh và phản ứng lại với dữ liệu đầu vào, tương tác của người dùng, hoặc các trạng thái thay đổi. Trong bài viết này, chúng ta sẽ cùng nhau khám phá mọi ngóc ngách của câu lệnh điều kiện trong JavaScript, từ những khái niệm đơn giản nhất đến các kỹ thuật tối ưu.

Tại sao cần sử dụng câu lệnh điều kiện?

Một chương trình không có câu lệnh điều kiện giống như một câu chuyện chỉ có một đường thẳng, không có bất kỳ nút thắt hay ngã rẽ nào. Nó sẽ thực thi các lệnh một cách tuần tự từ trên xuống dưới. Nhưng thực tế thì không đơn giản như vậy.

Hãy xem xét các ví dụ thực tế:

  • Đăng nhập: Nếu người dùng nhập đúng mật khẩu, thì hiển thị trang chào mừng. Ngược lại, thông báo lỗi.
  • Mua sắm online: Nếu sản phẩm còn trong kho, thì cho phép người dùng thêm vào giỏ hàng. Ngược lại, hiển thị thông báo "Hết hàng".
  • Chế độ Sáng/Tối: Nếu người dùng bật chế độ tối, thì đổi màu nền thành đen. Ngược lại, giữ màu nền trắng.

Những kịch bản này đều cần đến khả năng ra quyết định, và đó chính là nhiệm vụ của các câu lệnh điều kiện.

Các "ngã rẽ" phổ biến: Tìm hiểu các loại câu lệnh điều kiện

JavaScript cung cấp cho chúng ta một vài công cụ mạnh mẽ để xử lý logic điều kiện. Hãy cùng tìm hiểu từng loại một.

1. if - Ngã rẽ đơn giản nhất

Đây là dạng cơ bản nhất. Nó kiểm tra một điều kiện, và nếu điều kiện đó đúng (true), nó sẽ thực thi một khối mã.

Cú pháp:

if (dieu_kien) {
  // Mã sẽ được thực thi nếu dieu_kien là true
}

Ví dụ: Kiểm tra xem người dùng đủ tuổi để xem nội dung hay không.

let age = 20

if (age >= 18) {
  console.log('Chào mừng bạn! Bạn đã đủ tuổi để truy cập.')
}
// Kết quả: "Chào mừng bạn! Bạn đã đủ tuổi để truy cập."

let anotherAge = 15
if (anotherAge >= 18) {
  console.log('Dòng này sẽ không bao giờ được in ra.')
}
// Không có gì được in ra

2. if...else - Lựa chọn A hoặc B

Đây là một sự mở rộng của if. Nó cho phép bạn thực thi một khối mã nếu điều kiện đúng, và một khối mã khác nếu điều kiện sai (false).

Cú pháp:

if (dieu_kien) {
  // Mã thực thi nếu dieu_kien là true
} else {
  // Mã thực thi nếu dieu_kien là false
}

Ví dụ: Kiểm tra xem một số là chẵn hay lẻ.

let number = 7

if (number % 2 === 0) {
  console.log(number + ' là số chẵn.')
} else {
  console.log(number + ' là số lẻ.')
}
// Kết quả: "7 là số lẻ."

3. if...else if...else - Khi có nhiều hơn hai lựa chọn

Khi bạn có nhiều điều kiện cần kiểm tra, chuỗi if...else if...else là công cụ hoàn hảo. Nó sẽ kiểm tra các điều kiện theo thứ tự từ trên xuống dưới và sẽ thực thi khối mã của điều kiện đầu tiên mà nó thấy là đúng.

Cú pháp:

if (dieu_kien_1) {
  // Mã thực thi nếu dieu_kien_1 là true
} else if (dieu_kien_2) {
  // Mã thực thi nếu dieu_kien_2 là true
} else {
  // Mã thực thi nếu tất cả các điều kiện trên đều false
}

Ví dụ: Xếp loại học sinh dựa trên điểm số.

let score = 85

if (score >= 90) {
  console.log('Xếp loại A')
} else if (score >= 80) {
  console.log('Xếp loại B') // Điều kiện này đúng, mã sẽ dừng ở đây
} else if (score >= 70) {
  console.log('Xếp loại C')
} else {
  console.log('Xếp loại D')
}
// Kết quả: "Xếp loại B"

4. switch...case - "Bảng chỉ dẫn" cho các giá trị cụ thể

Câu lệnh switch là một giải pháp thay thế gọn gàng cho chuỗi if...else if...else dài, đặc biệt khi bạn đang so sánh một biến với nhiều giá trị cụ thể.

Cú pháp:

switch (gia_tri_can_so_sanh) {
  case gia_tri_1:
    // Mã thực thi nếu gia_tri_can_so_sanh === gia_tri_1
    break // Rất quan trọng!
  case gia_tri_2:
    // Mã thực thi nếu gia_tri_can_so_sanh === gia_tri_2
    break
  default:
  // Mã thực thi nếu không có case nào khớp
}

Lưu ý quan trọng: Đừng quên từ khóa break! Nếu không có break, mã sẽ tiếp tục chạy xuống các case tiếp theo ("fall-through") cho đến khi gặp break hoặc kết thúc khối switch. Khối default là tùy chọn, nó sẽ chạy khi không có case nào khớp.

Ví dụ: Hiển thị tên ngày trong tuần dựa vào số.

let dayOfWeek = 3
let dayName

switch (dayOfWeek) {
  case 1:
    dayName = 'Thứ Hai'
    break
  case 2:
    dayName = 'Thứ Ba'
    break
  case 3:
    dayName = 'Thứ Tư'
    break
  case 4:
    dayName = 'Thứ Năm'
    break
  case 5:
    dayName = 'Thứ Sáu'
    break
  case 6:
    dayName = 'Thứ Bảy'
    break
  case 7:
    dayName = 'Chủ Nhật'
    break
  default:
    dayName = 'Ngày không hợp lệ'
}

console.log(dayName) // Kết quả: "Thứ Tư"

5. Toán tử ba ngôi (Ternary Operator) - Con đường tắt cho if...else

Đây là một cách viết tắt cực kỳ gọn gàng cho câu lệnh if...else. Nó thường được sử dụng để gán giá trị cho một biến dựa trên một điều kiện.

Cú pháp:

let result = dieu_kien ? gia_tri_neu_true : gia_tri_neu_false

Ví dụ: Gán thông báo dựa trên trạng thái đăng nhập.

let isLoggedIn = true
let message = isLoggedIn ? 'Chào mừng trở lại!' : 'Vui lòng đăng nhập.'

console.log(message) // Kết quả: "Chào mừng trở lại!"

Khi nào dùng gì? So sánh và lựa chọn tối ưu 💡

Dưới đây là bảng so sánh nhanh các loại câu lệnh điều kiện trong JavaScript:

Tình huốngLựa chọn tốt nhấtTại sao?
Chỉ cần kiểm tra một điều kiện duy nhất.ifĐơn giản, rõ ràng, không cần các nhánh thừa.
Có hai nhánh logic (đúng hoặc sai).if...else hoặc Toán tử ba ngôiDùng if...else cho logic phức tạp. Dùng toán tử ba ngôi cho việc gán giá trị đơn giản để mã gọn hơn.
Có nhiều điều kiện phức tạp, so sánh khoảng giá trị (vd: > 50).if...else if...elseRất linh hoạt, có thể xử lý các điều kiện không liên quan đến nhau.
So sánh một biến với nhiều giá trị cụ thể (vd: số, chuỗi).switch...caseThường dễ đọc và có cấu trúc rõ ràng hơn một chuỗi if...else if dài cho trường hợp này.

Falsy Values và Truthy Values - "Sự thật ngầm"

Một khái niệm cực kỳ quan trọng khi làm việc với điều kiện trong JavaScript là "truthy" và "falsy".

Falsy Values và Truthy Values trong JavaScript

  • Falsy: Là những giá trị mà JavaScript tự động coi là false khi được đặt trong một điều kiện. Có 6 giá trị falsy:

    • false
    • 0 (số không)
    • "" (chuỗi rỗng)
    • null
    • undefined
    • NaN (Not a Number)
  • Truthy: Là bất kỳ giá trị nào không phải là falsy. Ví dụ: true, 123, "hello", [] (mảng rỗng), {} (đối tượng rỗng).

Hiểu rõ điều này cho phép bạn viết code ngắn gọn hơn.

Ví dụ: Kiểm tra xem người dùng đã nhập tên hay chưa.

let userName = '' // Một giá trị falsy

// Thay vì viết: if (userName !== "")
if (userName) {
  console.log('Chào ' + userName)
} else {
  console.log('Vui lòng cho chúng tôi biết tên của bạn.')
}
// Kết quả: "Vui lòng cho chúng tôi biết tên của bạn."

Kết luận: Câu lệnh điều kiện giúp giải các bài toán thực tế

Câu lệnh điều kiện là một trong những khối xây dựng nền tảng và mạnh mẽ nhất trong JavaScript. Việc nắm vững cách sử dụng if, else, switch, và toán tử ba ngôi không chỉ giúp bạn giải quyết các vấn đề logic phức tạp mà còn giúp mã của bạn trở nên sạch sẽ, dễ đọc và hiệu quả hơn.

Hãy bắt đầu thực hành bằng cách tạo ra các kịch bản của riêng bạn. Logic ra quyết định có ở khắp mọi nơi, và bây giờ bạn đã có đủ công cụ để biến những logic đó thành mã nguồn sống động. Chúc bạn thành công trên hành trình chinh phục JavaScript! 🚀

Bài viết liên quan

[JS Basics] Mảng trong JavaScript là gì? Cách sử dụng Array hiệu quả nhất

Làm chủ cấu trúc dữ liệu Mảng trong JavaScript. Bài viết cung cấp kiến thức toàn diện từ khái niệm đến cách sử dụng Array để xử lý dữ liệu một cách hiệu quả nhất.

[JS Basics] Vòng lặp trong JavaScript: Hướng dẫn chi tiết cho người mới

Vòng lặp JavaScript là công cụ không thể thiếu. Khám phá cách sử dụng hiệu quả for, while, và các vòng lặp khác để tối ưu hóa code. Kèm theo ví dụ thực tế và mẹo nhỏ từ chuyên gia.

[JS Basics] Toán tử trong JavaScript: Tổng hợp và ví dụ thực hành dễ hiểu

Bạn muốn làm chủ JavaScript? Hãy bắt đầu bằng cách nắm vững các toán tử cơ bản. Hướng dẫn chi tiết này sẽ giúp bạn làm quen với các loại toán tử phổ biến nhất, từ số học đến logic, với các ví dụ thực tế.

[JS Basics] Hàm trong JavaScript: Khái niệm, cách khai báo và ví dụ chi tiết

Khám phá sức mạnh của hàm (Functions) trong JavaScript! Hướng dẫn từng bước cách viết và sử dụng hàm hiệu quả. Bắt đầu học ngay để nâng cao kỹ năng code của bạn.