Câu lệnh có điều kiện trong JavaKịch bản: if, else và else if
⚡ Tóm tắt thông minh
Câu lệnh điều kiện trong JavaScript quyết định khối mã nào sẽ được thực thi bằng cách kiểm tra một điều kiện, và các dạng if, if…else, và if…else if…else bao gồm hầu hết mọi quyết định rẽ nhánh mà một script cơ bản cần đến.
JavaCác câu lệnh điều kiện của Script
Chủ yếu có ba loại câu lệnh điều kiện trong JavaScript.
- nếu Tuyên bố: Câu lệnh 'if' thực thi mã dựa trên một điều kiện.
- if… else Tuyên bố: Câu lệnh if…else bao gồm hai khối mã; khi một điều kiện đúng, nó sẽ thực thi khối mã đầu tiên và khi điều kiện sai, nó sẽ thực thi khối mã thứ hai.
- if…else if…else Tuyên bố: Khi cần kiểm tra nhiều điều kiện và các khối mã khác nhau cần được thực thi dựa trên điều kiện nào là đúng, câu lệnh if…else if…else sẽ được sử dụng.
Mỗi trong ba dạng này được xem xét bên dưới cùng với cú pháp và ví dụ có thể chạy được. Các quy tắc tương tự được áp dụng cho dù tập lệnh được đặt ở đâu. bên trong trang hoặc trong một tệp bên ngoàivà liệu điều kiện được viết ở cấp cao nhất hay bên trong một chức năng.
Cách sử dụng câu lệnh điều kiện
Câu lệnh có điều kiện được sử dụng để quyết định luồng thực thi dựa trên các điều kiện khác nhau. Nếu điều kiện đúng thì bạn có thể thực hiện một hành động và nếu điều kiện sai thì bạn có thể thực hiện một hành động khác.
Sơ đồ bên dưới minh họa ý tưởng đó như một ngã ba đường: một điều kiện duy nhất được đánh giá một lần, và quyền điều khiển sẽ đi theo nhánh đúng hoặc nhánh sai, không bao giờ cả hai.
Nếu tuyên bố
Cú pháp:
if(condition) { lines of code to be executed if condition is true }
Bạn có thể sử dụng if Câu lệnh này được sử dụng nếu bạn chỉ muốn kiểm tra một điều kiện cụ thể. Khi biểu thức bên trong dấu ngoặc đơn được đánh giá thành trueKhối lệnh sẽ chạy; khi nó được đánh giá thành falseNgười phiên dịch sẽ bỏ qua đoạn đó và kịch bản tiếp tục với câu nói tiếp theo.
Hãy tự mình thử điều này:
<html>
<head>
<title>IF Statments!!!</title>
<script type="text/javascript">
var age = prompt("Please enter your age");
if(age>=18)
document.write("You are an adult <br />");
if(age<18)
document.write("You are NOT an adult <br />");
</script>
</head>
<body>
</body>
</html>
Ví dụ này yêu cầu người truy cập nhập tuổi, sau đó kiểm tra giá trị đó hai lần: một lần cho người từ 18 tuổi trở lên, một lần cho người dưới 18 tuổi. Bởi vì hai phép tính riêng biệt if các câu lệnh được sử dụng thay vì một elseCả hai điều kiện đều được đánh giá mỗi khi trang tải.
Tương đương hiện đại: Đoạn mã trên được giữ nguyên như đã công bố. Hiện tại JavaThông thường, kịch bản sẽ được viết với cùng logic như sau: let or const thay vì var, với console.log() or textContent thay vì document.write()và không có type="text/javascript" thuộc tính mà HTML5 cho phép tùy chọn.
Câu lệnh If…Else
Cú pháp:
if(condition) { lines of code to be executed if the condition is true } else { lines of code to be executed if the condition is false }
Bạn có thể sử dụng if...else Câu lệnh này hữu ích nếu bạn cần kiểm tra một điều kiện và thực thi một khối mã khác nhau cho mỗi kết quả. Chỉ có một trong hai khối mã luôn được chạy, vì vậy không cần thiết phải thực hiện kiểm tra thứ hai riêng biệt.
Hãy tự mình thử điều này:
<html>
<head>
<title>If...Else Statments!!!</title>
<script type="text/javascript">
// Get the current hours
var hours = new Date().getHours();
if(hours<12)
document.write("Good Morning!!!<br />");
else
document.write("Good Afternoon!!!<br />");
</script>
</head>
<body>
</body>
</html>
Đây new Date().getHours() Hàm này trả về giờ hiện tại của đồng hồ trình duyệt dưới dạng một số từ 0 đến 23. Bất kỳ giá trị nào dưới 12 sẽ hiển thị lời chào buổi sáng, và mọi giá trị khác sẽ được chuyển tiếp đến hàm khác. else chi nhánh.
Câu lệnh If…Else If…Else
Cú pháp:
if(condition1) { lines of code to be executed if condition1 is true } else if(condition2) { lines of code to be executed if condition2 is true } else { lines of code to be executed if condition1 is false and condition2 is false }
Bạn có thể sử dụng if...else if...else Câu lệnh này được sử dụng nếu bạn muốn kiểm tra nhiều hơn hai điều kiện. Các điều kiện được đánh giá từ trên xuống dưới, quá trình thực thi dừng lại ở điều kiện đầu tiên đúng và điều kiện cuối cùng... else Nó đóng vai trò như một giải pháp tổng quát khi không có giải pháp nào phù hợp.
Hãy tự mình thử điều này:
<html>
<head>
<script type="text/javascript">
var one = prompt("Enter the first number");
var two = prompt("Enter the second number");
one = parseInt(one);
two = parseInt(two);
if (one == two)
document.write(one + " is equal to " + two + ".");
else if (one<two)
document.write(one + " is less than " + two + ".");
else
document.write(one + " is greater than " + two + ".");
</script>
</head>
<body>
</body>
</html>
Lưu ý hai cuộc gọi đến parseInt()Các giá trị được trả về bởi prompt() Vì chúng là chuỗi ký tự, nên việc so sánh chúng mà không chuyển đổi sẽ so sánh văn bản chứ không phải số và sẽ báo cáo "9" lớn hơn "10".
Đệ tam Operator: Viết tắt của cụm từ if…else
Khi một if...else Khối lệnh chỉ chọn giữa hai giá trị, trong khi toán tử điều kiện (ba ngôi) thể hiện cùng một quyết định như một biểu thức duy nhất. Đó là một trong số đó. JavaToán tử kịch bản nhận ba toán hạng: một điều kiện, một dấu chấm hỏi, giá trị được sử dụng khi điều kiện đúng, một dấu hai chấm và giá trị được sử dụng khi điều kiện sai.
// if...else form let message; if (age >= 18) { message = "adult"; } else { message = "minor"; } // same decision as a ternary expression let label = age >= 18 ? "adult" : "minor";
Hãy sử dụng toán tử ba ngôi khi nó giúp cải thiện khả năng đọc hiểu, chứ không chỉ để tiết kiệm dòng mã:
- Phù hợp tốt: Chọn một trong hai giá trị để gán, trả về hoặc đưa vào chuỗi mẫu.
- Phù hợp với người nghèo: Các nhánh thực thi nhiều câu lệnh, gọi hàm để thực hiện các tác dụng phụ hoặc cần các biến cục bộ riêng.
- Tránh lồng nhau: Một tam phân lồng trong tam phân khó đọc hơn nhiều so với một tam phân thông thường.
else ifchuỗi.
Câu lệnh switch so với câu lệnh if…else if…else
Dọc theo else if Chuỗi so sánh liên tục cùng một biến với các giá trị cố định khác nhau thường rõ ràng hơn khi được biểu diễn dưới dạng: switch câu lệnh. Câu lệnh switch đánh giá biểu thức của nó một lần, sau đó nhảy đến câu lệnh phù hợp. case; break ngăn chặn việc thực thi tiếp tục sang trường hợp tiếp theo, và default đóng vai trò cuối cùng else.
switch (day) { case "Sat": case "Sun": document.write("Weekend"); break; default: document.write("Weekday"); }
Hai cấu trúc này không thể thay thế cho nhau trong mọi trường hợp:
| Điểm so sánh | nếu...khác nếu...khác | chuyển đổi |
|---|---|---|
| Loại bài kiểm tra | Bất kỳ biểu thức boolean nào, bao gồm cả các phạm vi như hours<12 |
Chỉ bình đẳng với các giá trị cố định |
| Phép so sánh được sử dụng | Bất kể bạn viết toán tử nào | So sánh nghiêm ngặt, vậy nên "5" không phù hợp với 5 |
| Dễ đọc | Tốt nhất cho một vài tình trạng bệnh không liên quan đến nhau. | Phù hợp nhất với nhiều giá trị của cùng một biến. |
| Lỗi thường gặp | Quên phần đuôi else |
Quên break, điều này cho phép quá trình thực thi diễn ra suôn sẻ |
Giá trị đúng và sai trong JavaĐiều kiện kịch bản
Điều kiện không nhất thiết phải là sự so sánh. JavaScript sẽ chuyển đổi bất cứ thứ gì nó tìm thấy bên trong dấu ngoặc đơn thành giá trị boolean trước, đó là lý do tại sao. if (name) Đây là mã hợp lệ. Chỉ có sáu giá trị chuyển đổi thành false: false, 0, chuỗi rỗng, null, undefinedvà NaNMọi thứ khác đều đúng, kể cả chuỗi ký tự. "0", một mảng rỗng và một đối tượng rỗng.
Hầu hết các lỗi điều kiện trong các kịch bản dành cho người mới bắt đầu đều xuất phát từ một vài lỗi sau:
- Thay vì so sánh, hãy sử dụng phép gán:
if (x = 5)gán giá trị và luôn luôn đúng;if (x === 5)so sánh. - Những bất ngờ về sự bình đẳng lỏng lẻo:
==chuyển đổi kiểu dữ liệu trước khi so sánh, vì vậy"" == 0Đúng vậy. Tôi thích hơn.===. - Thiếu niềng răng: không có
{}Chỉ có câu lệnh tiếp theo mới thuộc về nhánh đó, giống hệt như các ví dụ ở trên. - Dữ liệu đầu vào chưa chuyển đổi: giá trị từ
prompt()và các trường biểu mẫu là chuỗi ký tự cho đến khiparseInt()orNumber()chuyển đổi chúng. - Các nhánh không thể với tới: trong một
else ifTrong chuỗi, hãy đặt điều kiện hẹp nhất lên trước, hoặc một điều kiện rộng hơn được thực hiện sớm hơn sẽ luôn thắng.

