Являются ли эти логические операции одинаковыми? - PullRequest
0 голосов
/ 01 февраля 2020
(day == ("Monday" || "Tuesday" || "Wednesday"))

OR

(day == "Monday" || day == "Tuesday"|| day == "Wednesday")

Я помещаю их в состояние "ЕСЛИ", и я не уверен, что они делают то же самое?

1 Ответ

1 голос
/ 01 февраля 2020

Нет.

Выражения, заключенные в скобки, оцениваются первыми. В вашем фрагменте это означает в этой строке:

(day == ("Monday" || "Tuesday" || "Wednesday"))

("Monday" || "Tuesday" || "Wednesday") оценивается в первую очередь, прежде чем рассматривать что-либо еще. Это три непустые строки - и непустые строки truey . Поскольку JavaScript использует оценку короткого замыкания , выражение будет вычисляться до первого истинного значения, "Monday", каждый раз.

Таким образом, первое условие эквивалентно этому:

(day == "Monday")

И второе условие к этому, как написано:

(day == "Monday" || day == "Tuesday"|| day == "Wednesday")

Если вы хотите проверить одну переменную по множеству значений одновременно, я настоятельно рекомендую используя массивы. Следующее условие логически эквивалентно вашему второму условию:

(["Monday", "Tuesday", "Wednesday"].includes(day)) 
...