В Javascript есть нечто, называемое truthy
и falsy
значениями.В итоге, как значение оценивается в логическом (true
или false
) контексте.
Все значения являются достоверными, если они не определены как ложные (т. Е., Кроме false, 0,"", null, undefined и NaN).
В вашем коде, когда вы написали:
if (firstSymbol === "A" || "a" || "D" || "d")
Вы проверяете 4 логических условия:
firstSymbol === "A"
- Результат будет зависеть от firstSymbol
"a"
- Всегда будет оцениваться до true
"D"
- Всегда будет оцениваться до true
"d"
- всегда будет иметь значение true
Итак, поскольку условия 2, 3 и 4 всегда будут true
, ваш код всегда будет вводить if
заявление.Если хотя бы один из них будет true
, поведение будет таким же.
Вы можете переписать его несколькими способами:
if (firstSymbol === "A" || firstSymbol === "a" || firstSymbol === "D" || firstSymbol === "d")
или
if (["A", "a", "D", "d"].indexOf(firstSymbol) > -1)
или
if (["A", "D"].indexOf(firstSymbol.toUpperCase()) > -1)