Ответ 1
Как указано на странице логических операторов MDN, оператор &&
:
Возвращает expr1, если его можно преобразовать в false; в противном случае возвращает expr2. Таким образом, при использовании с булевыми значениями
&&
возвращает true, если оба операнда истинны; в противном случае возвращает false.
В вашем случае expr1 (anotherVar == 50
) является истинным (не false), поэтому он возвращает expr2 (someVar
), который равен 25
.
Он не возвращает true
или false
, потому что expr2 не является логическим значением.
Значение, созданное оператором
&&
или||
, необязательно имеет тип Boolean. Выводимое значение всегда будет значением одного из двух выражений операнда.