Alternatywa w warunku

0

Witam,

Swego czasu gdy coś kodowałem, miałem w instrukcję if w takiej formie

var x = 'e',
    result = false;

if(x === ('a' || 'e' || 'd')){
    result = true
}
else{
     result = false
}

Jednak kod nie działał prawidłowo, musiałem z osobna rozpisywać w warunku każdy przypadek, czyli

x === 'a' || x === 'e' || x === 'd'

Potrafi ktoś wytłumaczyć dlaczego pierwszy przykład nie działał prawidłowo i czemu alternatywy w nawiasach nie były brane pod uwagę ?

Pozdrawiam

0

bo warunek('a' || 'e' || 'd') zwróci ci pierwszą wartość, potem sprawdzi czy x jest identyczny z 'a'
ponieważ nie jest to if() zwróci false
drugi zapis jest poprawny

0

Możesz to skrócić do takiego zapisu:

var x = 'e', results = (['a','e','d'].indexOf(x) !== -1);

Alternatywa którą opisujesz nie ma sensu moim zdaniem.

1

Najprościej:

const x = 'e';
const result = ['a', 'e', 'd'].includes(x);

lub w Twoim przypadku nawet:

const x = 'e';
const result = 'aed'.includes(x);

PS
Nie używaj skróconego zapisu deklaracji zmiennych, jest to niwygodne w utrzymaniu i zaśmieca repo zbędnymi diffami. Każda deklaracja powinna być w osobnej linii i mieć własny var / const / let.

1 użytkowników online, w tym zalogowanych: 0, gości: 1