Sintaks “elseif” dalam JavaScript

271

Apakah ini benar?

if(condition)
{

} 
elseif(condition)
{

}
else
{

}
Hari Gillala
sumber

Jawaban:

507

JavaScript's ifif dalam format "else if", misalnya:

if (condition) {

} else if (other_condition) {

} else {

}
Jeff
sumber
28
Ketika orang mengajukan pertanyaan seperti ini .. Saya pikir itu menunjukkan kesalahpahaman mendasar. Dengan ifdan elsebenar-benar tidak perlu elseif.
buka
14
@ Mark, saya setuju ... tapi kadang-kadang membuat saya kacau karena saya sudah terbiasa dengan bahasa yang memiliki elseif. Saya tahu itu identik, tapi saya ingin tahu apa alasan javascript untuk meninggalkannya. Saya senang, bagaimanapun, bahwa mereka tidak menggunakan elif, karena itu hanya salah :)
Jay K
16
@JayK: Haha .. PHP punya elseif, perl punya elsif(saya pikir), dan Python sudah elif.. pada mulanya membuat saya kesal, tapi ... Saya kira itu agak lucu. Itu melayani sedikit tujuan dalam Python dan PHP, karena itu tidak akan bekerja dengan sintaks usus mereka sebaliknya.
mpen
6
@Mark Ini lebih menunjukkan kesalahpahaman tentang pemberian tanda kurung. Tanda kurung tidak diperlukan untuk if/ elseblok, tetapi orang-orang dianjurkan untuk menggunakannya, jadi saya bisa mengerti mengapa ini terlihat tidak benar bagi pengguna baru.
46
@Ark Untuk mengklaim bahwa tidak pernah ada alasan untuk menggunakan "else if" salah. Lain jika pernyataan mirip dengan menggunakan "beralih", namun itu akan memungkinkan untuk perbandingan yang lebih rumit. Switch, tentu saja, hanya memungkinkan perbandingan yang sangat sederhana. Jadi ya, pasti ada alasan bagus untuk menggunakan yang lain jika.
jolsen
49

Cukup tambahkan spasi:

if (...) {

} else if (...) {

} else {

}
jMyles
sumber
33

Anda bisa menggunakan sintaks ini yang secara fungsional setara:

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

Ini berfungsi karena masing condition- masing sepenuhnya dievaluasi sebelum dibandingkan dengan switchnilai, sehingga yang pertama dinilai trueakan cocok dan cabangnya akan dieksekusi. Cabang berikutnya tidak akan dieksekusi, asalkan Anda ingat untuk menggunakannyabreak .

Perhatikan bahwa perbandingan ketat digunakan, sehingga cabang yang conditionhanya "benar" tidak akan dieksekusi. Anda dapat melemparkan nilai truthy untuk truedengan negasi ganda: !!condition.

Tamlyn
sumber
Ini tidak setara dengan AFAIK. Apa yang dapat Anda masukkan dalam kondisi jauh lebih terbatas, dan switch (true)bahkan tidak masuk akal.
zwol
2
Saya akui itu terlihat aneh pada awalnya tetapi ini setara. Syaratnya bisa apa saja yang Anda suka (termasuk panggilan fungsi atau apa pun) dan jika ia mengevaluasi truemaka kasing itu akan terpenuhi - persis seperti else if.
Tamlyn
5
Oh, aku mengerti apa yang kamu lakukan sekarang. Itu sangat pintar. (Saya menambahkan paragraf yang menjelaskan cara kerjanya, sehingga saya bisa menarik kembali downvote saya.)
zwol
1
Ini adalah solusi yang sangat sederhana, bersih dan elegan untuk daftar kondisi dengan lebih dari 1 kondisi "jika lain"
Steve Goossens
4
Tidak sepenuhnya sama jika kondisinya tidak if([]) alert('a')menghasilkan boolean, mis. Menghasilkan peringatan tetapi switch(true){case []:alert('a')}tidak. Itu karena []nilai kebenaran tetapi tidak sama dengan true, seperti yang dijelaskan oleh @zwol dalam hasil edit ini .
Oriol
13

Sebenarnya, secara teknis ketika indentasi benar, itu akan menjadi:

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

Tidak ada else if, secara tegas.

(Pembaruan: Tentu saja, seperti yang ditunjukkan, gaya di atas tidak dianggap baik.)

skube
sumber
1
Anda dapat, dan Anda harus, menulis ini if (condition1) { ... } else if (condition2) { ... } else { ... }.
zwol
4
Intinya saat menggunakan else ifAnda sebenarnya menghilangkan blok opsional {...}. Saya merujuk berdasarkan EMCAScript dan MDN ..
skube
13
Dalam hal tata bahasa formal bahasa, Anda benar, tetapi jawaban Anda mungkin memberi orang kesan yang salah bahwa itu else { if ... }adalah gaya yang baik.
zwol
1
Apa yang dikatakan zwol. Ada apa yang kamu (skube) maksudkan .. Dan kemudian ada apa yang kamu katakan.
Gerard ONeill
6
if ( 100 < 500 ) {
   //any action
}
else if ( 100 > 500 ){
   //any another action
}

Mudah, gunakan ruang

IdemeNaHavaj
sumber
2

Pernyataan bersyarat digunakan untuk melakukan tindakan yang berbeda berdasarkan kondisi yang berbeda.

Gunakan ifuntuk menentukan blok kode yang akan dieksekusi, jika kondisi yang ditentukan benar

Gunakan elseuntuk menentukan blok kode yang akan dieksekusi, jika kondisi yang sama salah

Gunakan else ifuntuk menentukan kondisi baru untuk diuji, jika kondisi pertama salah

AA Noman
sumber
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') 
zloctb
sumber
0

Anda kehilangan ruang antara elsedanif

Seharusnya else ifbukanelseif

if(condition)
{

} 
else if(condition)
{

}
else
{

}
codemirror
sumber