почему данная программа дает true и if выполняется?

if(arr[i] == 1 || 2) Где i != 1 или 2. Мне кажется, что если сравнить, скажем, 3 == 1 || 2 будет false, но, однако, оно дает true. Задача в том, чтобы сравнить элемент массива, и если элемент массива i != 1 или 2, то оно выводило бы некое сообщение


Ответы (1 шт):

Автор решения: Igor

Это - if(arr[i] == 1 || 2) - не сравнивает arr[i] сначала с 1, а потом с 2, как Вы, вероятно, думаете.

Оно эквивалентно if ((arr[i] == 1) || (2)). Хоть arr[i] может быть равно или не равно единице, второй операнд логического ИЛИ - 2 - всегда является true в булевском смысле. Значит и все выражение будет true независимо от значения первого операнда.


if (arr[i] == 1 || arr[i] == 2)

console.log(3 == 1 || 2);
console.log((3 == 1) || (2));

console.log(!!(3 == 1 || 2));

→ Ссылка