Javascript оценивает логику по истинности / ложности. Такие значения, как (false
, "", null, undefined
, 0
, -0), оцениваются как логическая ложь.
Объедините это с ленивым вычислением, операции 'ИЛИ' теперь оцениваются из left to right
и останавливается после обнаружения true
Поскольку в вашем примере истинность не является буквально логическим значением, возвращается значение.
В этом случае:
x = 0; y = 5; alert(y || x)/*returns 5*/; alert(x || y)/*also returns 5*/;
это могут быть и другие объекты.
functionThatReturnsTrue() || functionThatDoesSomething();