if...else

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Câu lệnh if...else thực thi một câu lệnh nếu điều kiện được chỉ định là truthy. Nếu điều kiện là falsy, câu lệnh khác trong mệnh đề else tùy chọn sẽ được thực thi.

Try it

function testNum(a) {
  let result;
  if (a > 0) {
    result = "positive";
  } else {
    result = "NOT positive";
  }
  return result;
}

console.log(testNum(-5));
// Expected output: "NOT positive"

Cú pháp

js
if (condition)
  statement1

// With an else clause
if (condition)
  statement1
else
  statement2
condition

Một biểu thức được xem xét là truthy hoặc falsy.

statement1

Câu lệnh được thực thi nếu conditiontruthy. Có thể là bất kỳ câu lệnh nào, kể cả các câu lệnh if lồng nhau. Để thực thi nhiều câu lệnh, sử dụng câu lệnh block ({ /* ... */ }) để nhóm các câu lệnh đó. Để không thực thi câu lệnh nào, sử dụng câu lệnh rỗng.

statement2

Câu lệnh được thực thi nếu conditionfalsy và mệnh đề else tồn tại. Có thể là bất kỳ câu lệnh nào, kể cả câu lệnh block và các câu lệnh if lồng nhau.

Mô tả

Nhiều câu lệnh if...else có thể lồng vào nhau để tạo ra mệnh đề else if. Lưu ý rằng không có từ khóa elseif (viết liền) trong JavaScript.

js
if (condition1)
  statement1
else if (condition2)
  statement2
else if (condition3)
  statement3
// …
else
  statementN

Để hiểu cách hoạt động, đây là cách nó trông nếu thụt lề đúng cách:

js
if (condition1)
  statement1
else
  if (condition2)
    statement2
  else
    if (condition3)
      statement3
// …

Để thực thi nhiều câu lệnh trong một mệnh đề, sử dụng câu lệnh block ({ /* ... */ }) để nhóm các câu lệnh đó.

js
if (condition) {
  statements1
} else {
  statements2
}

Không sử dụng block có thể dẫn đến hành vi khó hiểu, đặc biệt là nếu code được định dạng thủ công. Ví dụ:

js
function checkValue(a, b) {
  if (a === 1)
    if (b === 2)
      console.log("a is 1 and b is 2");
  else
    console.log("a is not 1");
}

Code này trông vô hại — tuy nhiên, thực thi checkValue(1, 3) sẽ in ra "a is not 1". Điều này là vì trong trường hợp dangling else, mệnh đề else sẽ được kết nối với mệnh đề if gần nhất. Do đó, code trên, với thụt lề đúng, sẽ trông như sau:

js
function checkValue(a, b) {
  if (a === 1)
    if (b === 2)
      console.log("a is 1 and b is 2");
    else
      console.log("a is not 1");
}

Nhìn chung, là một thói quen tốt khi luôn sử dụng câu lệnh block, đặc biệt trong code có các câu lệnh if lồng nhau.

js
function checkValue(a, b) {
  if (a === 1) {
    if (b === 2) {
      console.log("a is 1 and b is 2");
    }
  } else {
    console.log("a is not 1");
  }
}

Đừng nhầm lẫn giá trị Boolean nguyên thủy truefalse với tính truthy hay falsy của đối tượng Boolean. Bất kỳ giá trị nào không phải false, undefined, null, 0, -0, NaN, hoặc chuỗi rỗng (""), và bất kỳ đối tượng nào, kể cả đối tượng Boolean có giá trị là false, đều được coi là truthy khi được dùng làm điều kiện. Ví dụ:

js
const b = new Boolean(false);
if (b) {
  console.log("b is truthy"); // "b is truthy"
}

Ví dụ

Sử dụng if...else

js
if (cipherChar === fromChar) {
  result += toChar;
  x++;
} else {
  result += clearChar;
}

Sử dụng else if

Lưu ý rằng không có cú pháp elseif trong JavaScript. Tuy nhiên, bạn có thể viết nó với một khoảng trắng giữa elseif:

js
if (x > 50) {
  /* do something */
} else if (x > 5) {
  /* do something */
} else {
  /* do something */
}

Sử dụng phép gán làm điều kiện

Bạn hầu như không bao giờ nên có if...else với phép gán như x = y làm điều kiện:

js
if ((x = y)) {
  // …
}

Vì không giống như vòng lặp while, điều kiện chỉ được đánh giá một lần, vì vậy phép gán cũng chỉ được thực hiện một lần. Code trên tương đương với:

js
x = y;
if (x) {
  // …
}

Cách này rõ ràng hơn nhiều. Tuy nhiên, trong trường hợp hiếm gặp bạn muốn làm điều gì đó như vậy, tài liệu while có phần Sử dụng phép gán làm điều kiện với các khuyến nghị của chúng tôi.

Thông số kỹ thuật

Specification
ECMAScript® 2027 Language Specification
# sec-if-statement

Tương thích trình duyệt

Xem thêm