JavaScript'te “elseif” sözdizimi


Yanıtlar:


507

JavaScript's elseif "else if" biçimindedir, örneğin:

if (condition) {

} else if (other_condition) {

} else {

}

28
İnsanlar böyle sorular sorduğunda .. Bence bu temel bir yanlış anlama gösteriyor. İle ifve elsegerçekten gerek yok elseif.
12'de mpen

14
@ Mark, katılıyorum ... ama bazen başkaları olan dillere alışkın olduğum için beni karıştırıyor. Bunun aynı olduğunu biliyorum, ama javascript'in bunu dışarıda bırakma nedeninin ne olduğunu merak ediyorum. Ancak elif kullanmadığı için memnunum, çünkü bu sadece yanlış :)
Jay K

16
@JayK: Haha .. PHP var elseif, perl var elsif(sanırım), ve Python elifilk başta .. bu tür beni rahatsız, ama ... Sanırım biraz şirin. Python ve PHP'de hafif bir amaca hizmet eder, çünkü aksi takdirde kolon sözdizimiyle çalışmaz.
mpen

6
@ İşaret Daha fazla basamaklama ile ilgili bir yanlış anlama gösterir. Parantezler if/ elsebloklar için gerekli değildir , ancak insanlar bunları kullanmaya teşvik edilir, bu yüzden bunun neden yeni bir kullanıcı için yanlış göründüğünü anlayabilirim.

46
@ Mark "" if "ifadesinin yanlış olması için asla bir neden olmadığını iddia etmek. İfadeler "switch" kullanmaya benzerse, daha ayrıntılı karşılaştırmalar yapılmasını sağlar. Anahtar, elbette, sadece çok basit karşılaştırmalara izin verir. Öyleyse evet, eğer kesinlikle başka kullanmak için iyi nedenler var.
jolsen

49

Sadece bir boşluk ekleyin:

if (...) {

} else if (...) {

} else {

}

33

İşlevsel olarak eşdeğer olan bu sözdizimini kullanabilirsiniz:

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

Bu condition, her biri switchdeğerle karşılaştırılmadan önce tam olarak değerlendirildiğinden çalışır , bu nedenle değerlendirilen ilk değer trueeşleşir ve dalı yürütülür. Kullanmayı hatırlamanızbreak koşuluyla, sonraki şubeler yürütülmez .

O Not sıkı olan bir dal böylece karşılaştırma, kullanılan conditionsadece bir "truthy" olacak değil yürütülecek. Sen bir truthy değer dağıtmak için trueçift olumsuzlama ile: !!condition.


Bu işlevsel olarak eşdeğer AFAIK değildir. Koşullara koyabileceğiniz şey çok daha sınırlıdır ve switch (true)mantıklı bile değildir.
zwol

2
İlk başta garip göründüğünü itiraf ediyorum ama eşdeğer. Koşul, istediğiniz herhangi bir şey olabilir (işlev çağrıları veya herhangi bir şey dahil) ve eğer değerlendirilirse, truebu durum karşılanır - aynen olduğu gibi else if.
Tamlyn

5
Oh, şimdi ne yaptığını görüyorum. Bu oldukça zekice. (Nasıl çalıştığını açıklayan bir paragraf ekledim, böylece aşağı oyumu geri çekebildim.)
zwol

1
Bu, 1'den fazla "koşullu" durum içeren durum listeleri için çok basit, temiz ve zarif bir çözümdür
Steve Goossens

4
Koşullar booleans döndürmezse tamamen eşdeğer değildir, örneğin if([]) alert('a')uyarıyı üretir, ancak switch(true){case []:alert('a')}vermez. Çünkü bu düzenlemede açıkladığı gibi @zwol []dürüst bir değerdir ama eşit değildir . true
Oriol

13

Aslında, teknik olarak uygun şekilde girintilendiğinde, şöyle olur:

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

Hiçbir yoktur else ifaçıkçası.

(Güncelleme: Tabii ki, belirtildiği gibi, yukarıdaki iyi stil olarak kabul edilmez .)


1
Bunu yazabilirsin ve yazmalısın if (condition1) { ... } else if (condition2) { ... } else { ... }.
zwol

4
Aslında kullanırken else ifisteğe bağlı bloğu atlıyorsunuz {...}. EMCAScript ve MDN'ye dayanıyordum ..
skube

13
Dilin resmi dilbilgisi açısından haklısınız, ancak cevabınız insanlara else { if ... }iyi bir stil olan yanlış izlenim verebilir .
zwol

1
Zwol ne dedi. Demek istediğin (skube) var .. Ve sonra söylediklerin var.
Gerard ONeill

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

Kolay kullanım alanı


2

Koşullu ifadeler, farklı koşullara bağlı olarak farklı eylemler gerçekleştirmek için kullanılır.

ifBelirli bir koşul doğruysa yürütülecek bir kod bloğu belirtmek için kullanın

elseAynı koşul yanlışsa yürütülecek bir kod bloğu belirtmek için kullanın

else ifİlk koşul yanlışsa test edilecek yeni bir koşul belirtmek için kullanın


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

Sen arasına boşluk eksik elseveif

Bu olmalı else ifyerineelseif

if(condition)
{

} 
else if(condition)
{

}
else
{

}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.