В контексте if
операторов Я с вами, это абсолютно безопасно, потому что внутренне операция ToBoolean
будет выполняться для выражения условия ( см. Шаг 3 в спецификация ).
Но если вы хотите, скажем, вернуть логическое значение из функции, вы должны убедиться, что результат будет действительно логическим, например:
function isFoo () {
return 0 && true;
}
console.log(isFoo()); // will show zero
typeof isFoo() == "number";
В заключение, логические логические операторы могут возвращать операнд , а не Boolean
результат обязательно:
Оператор логического И (&&
) вернет значение второго операнда , если первый истинно :
true && "foo"; // "foo"
И он вернет значение первого операнда , если оно само по себе falsy :
NaN && "anything"; // NaN
0 && "anything"; // 0
С другой стороны, оператор логического ИЛИ (||
) вернет значение второго операнда , если первый из них falsy :
false || "bar"; // "bar"
И он вернет значение первого операнда , если оно само по себе не ложно:
"foo" || "anything"; // "foo"
Возможно, стоит упомянуть, что значения falsy : null
, undefined
, NaN
, 0
, строка нулевой длины и, конечно, false
.
Все остальное (не ложь , Boolean
объект или Boolean
значение), вычисленное в логическом контексте , вернет true
.