Lebed_Sergey
@Lebed_Sergey

Почему возвращается true а не 5?

Добрый день.
Вот такой пример: console.log( 5 === 5 && 3 > 1 || 5);

ответ True.
первым действием идет 3 > 1 (true)
2) 5 === 5 (true)
3) 5 === 5 && 3 > 1 (true)
4) 5 === 5 && 3 > 1 || 5 (оператор или возвращает последнюю правду, а по факту дает True, а не 5. Ведь 5 в этом контексте тоже true)
  • Вопрос задан
  • 127 просмотров
Решения вопроса 2
vabka
@vabka
Токсичный шарпист
Потому что || - это ленивая операция и приоритет у неё ниже, чем у &&.
=> Сначала будет вычислено выражение 5 === 5 && 3 > 1, которое имеет значение true
А раз оно true, то и правую часть 5 вычислять не нужно.
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Ошибка тут:
оператор ИЛИ возвращает последнюю правду, а по факту дает True, а не 5. Ведь 5 в этом контексте тоже true

На самом деле ИЛИ || возвращает первую правду. И дальше не проверяет. Т.е. 3 > 1 === true

Ещё тут важно, что у || приоритет ниже ↓, чем у && ↑. Очерёдность выполнения:
5 === 5 && 3 > 1 || 5
(5 === 5 && 3 > 1) || 5
// && проверит, чтобы все были true
// и вернёт последний, т.е. вернёт 3 > 1 === true
// || увидит, что уже есть true и вернёт его, не проверяя 5

Позавчера, как раз, отвечал на похожий вопрос. Вам же.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Результат && - значение первого операнда, если оно приводится к false, иначе значение второго операнда.
console.log(true && 5); // 5
console.log(false && 5); // false

Результат || - значение первого операнда, если оно приводится к true, иначе значение второго операнда.
console.log(true || 5); // true
console.log(false || 5); // 5

При этом, если результат понятен по первому операнду, то второй не вычисляется вообще.
Ответ написан
Комментировать
imko
@imko
Senior Scratch Developer
Потому что результат вызова консоль лога это не его аргумент(ы)
Ответ написан
@Brilliancepride
Потому что указывается условие, по сути вопрос, который не рассчитан на какое то конкретное значение целочисленное, строчное и т.д. В аргументах условие, значит есть ответ либо false, либо true. В данном случае true.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы