Cú pháp khácif Cú pháp trong JavaScript


Câu trả lời:


507

Otherif của JavaScript có định dạng "other if", vd:

if (condition) {

} else if (other_condition) {

} else {

}

28
Khi mọi người đặt câu hỏi như thế này .. tôi nghĩ nó cho thấy một sự hiểu lầm cơ bản. Với ifelsethực sự không có nhu cầu elseif.
mở

14
@Mark, tôi đồng ý ... nhưng đôi khi điều đó làm tôi bực mình vì tôi đã quen với các ngôn ngữ có ngôn ngữ khác. Tôi biết nó giống hệt nhau, nhưng tôi tự hỏi lý do của javascript là gì khi bỏ nó đi. Tuy nhiên, tôi mừng vì họ đã không sử dụng elif, vì điều đó không đúng :)
Jay K

16
@JayK: Haha .. PHP có elseif, perl có elsif(tôi nghĩ vậy) và Python có elif.. điều đó làm tôi khó chịu lúc đầu, nhưng ... tôi đoán nó thật dễ thương. Mặc dù vậy, nó phục vụ một mục đích nhỏ trong Python và PHP, vì nó sẽ không hoạt động với cú pháp dấu hai chấm của chúng.
mở

6
@Mark Nó cho thấy một sự hiểu lầm về ngoặc. Chân đế không cần thiết cho if/ elsekhối, nhưng mọi người được khuyến khích sử dụng chúng, vì vậy tôi có thể hiểu tại sao điều này có vẻ không chính xác đối với người dùng mới.

46
@Mark Để khẳng định rằng không bao giờ có lý do để sử dụng "other if" là không chính xác. Khác nếu các câu lệnh gần giống với việc sử dụng "chuyển đổi", tuy nhiên nó sẽ cho phép so sánh phức tạp hơn. Switch, tất nhiên, chỉ cho phép so sánh rất đơn giản. Vì vậy, có, chắc chắn có lý do tốt để sử dụng khác nếu.
jolsen

49

Chỉ cần thêm một khoảng trắng:

if (...) {

} else if (...) {

} else {

}

33

Bạn có thể sử dụng cú pháp này tương đương về chức năng:

switch (true) {
  case condition1:
     //e.g. if (condition1 === true)
     break;
  case condition2:
     //e.g. elseif (condition2 === true)
     break;
  default:
     //e.g. else
}

Điều này hoạt động bởi vì mỗi cái conditionđược đánh giá đầy đủ trước khi so sánh với switchgiá trị, vì vậy cái đầu tiên được đánh giá truesẽ khớp và nhánh của nó sẽ thực thi. Các nhánh tiếp theo sẽ không thực thi, miễn là bạn nhớ sử dụngbreak .

Lưu ý rằng so sánh nghiêm ngặt được sử dụng, do đó, một nhánh conditionchỉ đơn thuần là "sự thật" sẽ không được thực thi. Bạn có thể sử dụng một giá trị trung thực truevới phủ định kép : !!condition.


Đây không phải là chức năng tương đương AFAIK. Những gì bạn có thể đặt trong các điều kiện hạn chế hơn nhiều, và switch (true)thậm chí không có ý nghĩa.
zwol

2
Tôi thừa nhận nó trông kỳ lạ lúc đầu nhưng nó tương đương. Điều kiện có thể là bất cứ điều gì bạn thích (bao gồm các cuộc gọi chức năng hoặc bất cứ điều gì) và nếu nó đánh giá truethì trường hợp đó sẽ được đáp ứng - chính xác như thế else if.
Tamlyn

5
Ồ, tôi thấy những gì bạn đang làm bây giờ. Đó là khá thông minh. (Tôi đã thêm một đoạn giải thích cách thức hoạt động của nó, để tôi có thể rút lại downvote của mình.)
zwol

1
Đây là một giải pháp rất đơn giản, gọn gàng và thanh lịch cho các danh sách điều kiện có nhiều hơn 1 điều kiện "khác nếu"
Steve Goossens

4
Không hoàn toàn tương đương nếu các điều kiện không trả về booleans, ví dụ: if([]) alert('a')tạo cảnh báo nhưng switch(true){case []:alert('a')}không. Đó là bởi vì đó []là một giá trị trung thực nhưng không bằng true, như @zwol đã giải thích trong chỉnh sửa này .
Oriol

13

Trên thực tế, về mặt kỹ thuật khi thụt lề đúng cách, nó sẽ là:

if (condition) {
    ...
} else {
    if (condition) {
        ...
    } else {
        ...
    }
}

Không có else if, nói đúng ra.

(Cập nhật: Tất nhiên, như đã chỉ ra, ở trên không được coi là phong cách tốt.)


1
Bạn có thể, và bạn nên, viết điều này if (condition1) { ... } else if (condition2) { ... } else { ... }.
zwol

4
Về bản chất khi sử dụng else ifbạn thực sự đang bỏ qua khối tùy chọn {...}. Tôi đã tham khảo dựa trên EMCAScriptMDN ..
skube

13
Về mặt ngữ pháp chính thức của ngôn ngữ, bạn đúng, nhưng câu trả lời của bạn có thể mang lại cho mọi người ấn tượng không chính xác đó else { if ... }là phong cách tốt.
zwol

1
Những gì zwol nói. Có những gì bạn (skube) có nghĩa là .. Và sau đó là những gì bạn nói.
Gerard ONeill

6
if ( 100 < 500 ) {
   //any action
}
else if ( 100 > 500 ){
   //any another action
}

Dễ dàng sử dụng


2

Các câu điều kiện được sử dụng để thực hiện các hành động khác nhau dựa trên các điều kiện khác nhau.

Sử dụng ifđể chỉ định một khối mã sẽ được thực thi, nếu một điều kiện được chỉ định là đúng

Sử dụng elseđể chỉ định một khối mã sẽ được thực thi, nếu điều kiện tương tự là sai

Sử dụng else ifđể chỉ định một điều kiện mới để kiểm tra, nếu điều kiện đầu tiên là sai


1
x = 10;
if(x > 100 ) console.log('over 100')
else if (x > 90 ) console.log('over 90')
else if (x > 50 ) console.log('over 50')
else if (x > 9 ) console.log('over 9')
else console.log('lower 9') 

0

Bạn đang thiếu một khoảng trống giữa elseif

Nó nên được else ifthay vìelseif

if(condition)
{

} 
else if(condition)
{

}
else
{

}
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.