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
if (condition)
statement1
// With an else clause
if (condition)
statement1
else
statement2
conditionstatement1-
Câu lệnh được thực thi nếu condition là truthy. Có thể là bất kỳ câu lệnh nào, kể cả các câu lệnh
iflồ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
conditionlà falsy và mệnh đềelsetồ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ệnhiflồ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.
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:
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 đó.
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ụ:
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:
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.
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 true và false 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ụ:
const b = new Boolean(false);
if (b) {
console.log("b is truthy"); // "b is truthy"
}
Ví dụ
>Sử dụng if...else
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 else và if:
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:
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:
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> |