Cách chỉ định nhiều điều kiện trong câu lệnh if trong javascript


87

Đây là cách tôi đề cập đến hai điều kiện nếu điều này hoặc điều này

if (Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')
    PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}

Câu trả lời:


154

chỉ cần thêm chúng trong ngoặc chính của câu lệnh if như

if ((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) {
            PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}

Về mặt logic, điều này cũng có thể được viết lại theo cách tốt hơn! Điều này có cùng ý nghĩa

if (Type == 2 && (PageCount == 0 || PageCount == '')) {

1
Đồng tình. Cũng không có dấu ngoặc nhọn mở cho điều kiện. Điều đó không thể giúp được.
Tass

26

Đây là một cách thay thế để làm điều đó.

const conditionsArray = [
    condition1, 
    condition2,
    condition3,
]

if (conditionsArray.indexOf(false) === -1) {
    "do somthing"
}

Hoặc ES6

if (!conditionsArray.includes(false)) {
   "do somthing"
}

19

Tôi hiện đang kiểm tra một số lượng lớn các điều kiện, điều này trở nên khó sử dụng bằng cách sử dụng phương thức câu lệnh if ngoài 4 điều kiện. Chỉ để chia sẻ một giải pháp thay thế trông rõ ràng cho người xem trong tương lai ... quy mô phù hợp, tôi sử dụng:

var a = 0;
var b = 0;

a += ("condition 1")? 1 : 0; b += 1;
a += ("condition 2")? 1 : 0; b += 1;
a += ("condition 3")? 1 : 0; b += 1;
a += ("condition 4")? 1 : 0; b += 1;
a += ("condition 5")? 1 : 0; b += 1;
a += ("condition 6")? 1 : 0; b += 1;
// etc etc

if(a == b) {
    //do stuff
}

1
Tôi thấy không có ý kiến ​​nào cho rằng đây là cách làm không khôn ngoan, vì vậy tôi nghĩ rằng nó là tiết kiệm để sử dụng. Cảm ơn!
CousinCocaine

2
Cần lưu ý và đề cập rằng điều này chỉ hoạt động nếu tất cả các điều kiện phải đánh giá là đúng. Nói cách khác, đây là một cách viết khác ANDnhưng không phải OR.
Mark Kramer

6

toàn bộ ifnên được kèm theo trong dấu ngoặc và các ornhà điều hành là ||một không !!, vì vậy

if ((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) { ...

6

Đôi khi bạn có thể tìm thấy các thủ thuật để kết hợp thêm các trạng thái.

Ví dụ như:

0 + 0 = 0

"" + 0 = 0

vì thế

PageCount == 0
PageCount == ''

có thể được viết như sau:

PageCount+0 == 0

Trong javascript 0cũng tốt như việc falseđảo ngược !nó sẽ biến 0thànhtrue

!PageCount+0

với tổng số:

if ( Type == 2 && !PageCount+0 ) PageCount = elm.value;

Điều này là nếu bạn muốn làm cho mã của mình càng ngắn càng tốt nhưng nó đi ngược lại với nhiều thông lệ tốt. Giữ cho mã của bạn có thể đọc được. Câu trả lời này khó hiểu và sẽ khiến người tiếp theo đang xem mã của bạn mắc một số lỗi.
belvederef

4
if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) {

        PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}

Đây có thể là một trong những giải pháp khả thi, vì vậy 'hoặc' là || không phải !!


3

Quấn chúng vào một đôi parens bổ sung và bạn đã sẵn sàng.

if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == ''))
    PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}

-1
function go(type, pageCount) {
    if ((type == 2 && pageCount == 0) || (type == 2 && pageCount == '')) {
        pageCount = document.getElementById('<%=hfPageCount.ClientID %>').value;
    }
}

Vui lòng thụt lề mã của bạn, cũng vui lòng không trả lời câu hỏi nếu bạn không đủ tự tin.
Harshit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.