If ifadesinde birden fazla koşul [Javascript]

Çok sayıda koşulu kontrol etmek zorunda kaldığınız durumlarda, varsayılan yöntem yerine farklı bir bakış açısı denemek isterseniz, alternatiflere bir gözatalım 🙂

Normalde status değişkenini kontrol ettiğimizi varsayalım. Örneğin;

let status = 'online';

if (status === 'online' || status === 'busy' || status === 'away'){
    // işlemler
}

Bunu daha iyi bir yaklaşım ile şöyle yazabiliriz;

if (['online', 'busy', 'away'].indexOf(status) !== -1){
    // işlemler
}

indexOf’ı sıklıkla bitwise not operatörü (~) ile birlikte görebilirsiniz. Oda şöyledir;

if (~['online', 'busy', 'away'].indexOf(status)){
    // işlemler
}

Eğer console’a ~-1 diye çalıştırırsanız 0 yani false değeri döndüğünü görürsünüz. indexOf ile kontrol ettiğimizde eğer içinde bulunmuyorsa aradığımız değer garip bir şekilde -1 döndürüyordu. Buda teknik olarak bu operatör ile true-false’a göre kontrol etmemizi sağlıyor 🙂

Güzel haber şu ki artık buna da gerek yok. Çünkü 2016’da ES7 piyasaya sürüldü ve includes ile tanıştık. Artık şu şekilde kolayca mantıksal kontrol yapabiliyoruz.

if (['online', 'busy', 'away'].includes(status)){
    // işlemler
}