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.

  • 🔘 Cú pháp: Câu lệnh if chỉ thực thi khối lệnh của nó khi điều kiện bên trong dấu ngoặc đơn được đánh giá là đúng.
  • ☑️ Hai nhánh: Cấu trúc if…else cung cấp một khối dự phòng sẽ được thực thi bất cứ khi nào điều kiện không đúng.
  • Nhiều nhánh: Chuỗi câu lệnh `else if` kiểm tra nhiều điều kiện theo thứ tự và dừng lại ở điều kiện đầu tiên khớp.
  • 🧪 Viết tắt: Toán tử ba ngôi rút gọn câu lệnh if…else đơn giản thành một biểu thức duy nhất trả về một giá trị.
  • 🛠️ thay thế: Câu lệnh switch so sánh một giá trị với nhiều tùy chọn cố định một cách gọn gàng hơn so với một chuỗi dài.
  • 📊 Cạm bẫy: Các giá trị sai, toán tử gán thừa và dấu ngoặc nhọn bị thiếu là nguyên nhân gây ra hầu hết các lỗi điều kiện.

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

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.

  1. nếu Tuyên bố: Câu lệnh 'if' thực thi mã dựa trên một điều kiện.
  2. 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.
  3. 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.

Sơ đồ lưu trình thể hiện một JavaĐiều kiện kịch bản phân nhánh thành đường dẫn đúng và đường dẫn sai.

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 if chuỗ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, undefinedNaNMọ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 khi parseInt() or Number() chuyển đổi chúng.
  • Các nhánh không thể với tới: trong một else if Trong 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.

Câu Hỏi Thường Gặp

Một đơn = Gán một giá trị và làm cho điều kiện trở thành đúng một cách ngẫu nhiên. == so sánh sau khi chuyển đổi kiểu dữ liệu, vì vậy "" == 0 là đúng. === So sánh cả giá trị và kiểu dữ liệu cùng nhau, và đây là phương án mặc định an toàn hơn.

Trợ lý AI có thể diễn đạt lại một điều gì đó không quen thuộc else if Hãy giải thích chuỗi bằng ngôn ngữ đơn giản, gợi ý các giá trị đầu vào dẫn đến từng nhánh và đánh dấu một điều kiện không bao giờ đúng. Luôn luôn tự chạy mã, vì lời giải thích chỉ là gợi ý chứ không phải bằng chứng.

Thường thì có. Trợ lý GitHub Hoàn thành mã rẽ nhánh từ một bình luận hoặc một điều kiện một phần. Kiểm tra các giá trị biên mà nó chọn, vì nó được tạo ra > nơi bạn cần >= Rất dễ bỏ sót.

Không có giới hạn về ngôn ngữ. Bất kỳ câu lệnh nào cũng có thể xuất hiện bên trong một nhánh, bao gồm cả các câu lệnh tiếp theo. if. Vượt quá hai cấp độ, logic trở nên khó theo dõi, vì vậy hãy kết hợp các bài kiểm tra với && Hoặc quay lại sớm hơn.

Không. Nếu không có dấu ngoặc nhọn, nhánh chỉ sở hữu câu lệnh tiếp theo, đó là lý do tại sao các ví dụ trên hoạt động. Việc thêm dấu ngoặc nhọn vẫn được khuyến khích, bởi vì dòng thứ hai được thêm vào sau đó sẽ tự động bị loại bỏ khỏi nhánh.

&& Điều này chỉ đúng khi cả hai phía đều nói sự thật, và || Điều này đúng khi một trong hai vế được xem xét. Cả hai đều bị rút ngắn mạch: vế phải không bao giờ được đánh giá một khi kết quả đã được quyết định.

getHours() Hàm này trả về giờ hiện tại trên đồng hồ của người truy cập dưới dạng một số từ 0 đến 23, vì vậy việc so sánh với 12 sẽ chia ngày thành buổi sáng và buổi chiều mà không cần bất kỳ thao tác phân tích cú pháp bổ sung nào.

STT JavaĐoạn mã sử dụng hai từ khóa riêng biệt. else if, có khoảng cách giữa chúng. Từ đơn elseif Thuộc về PHP và một số ngôn ngữ mẫu, và gây ra lỗi cú pháp trong trình duyệt.

Tóm tắt bài viết này với: