Преобразование к типу Boolean
Для того, чтобы явно преобразовать значение к логическому типу, используют функцию Boolean()
. Неявное преобразование происходит в логическом контексте, или вызывается логическими операторами (|| && !
).
Boolean(2) // явное преобразование
if (2) { ... } // неявное преобразование в логическом контексте
!!2 // неявное преобразование логическим оператором
2 || 'hello' // неявное преобразование логическим оператором
Обратите внимание на то, что операторы, вроде||
и &&
выполняют преобразование значений к логическому типу для внутренних целей, а возвращают значения исходных операндов, даже если они не являются логическими.
// это выражение возвращает число 123, а не true
// 'hello' и 123 неявно преобразуются к логическому типу
// при работе оператора && для вычисления значения выражения
let x = 'hello' && 123; // x === 123
Так как при приведении значения к логическому типу возможны лишь два результата — true
или false
, легче всего освоить этот вид преобразований, запомнив те выражения, которые выдают false
:
Boolean('') // false
Boolean(0) // false
Boolean(-0) // false
Boolean(NaN) // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(false) // false
Любое значение, не входящее в этот список, преобразуется в true
, включая объекты, функции, массивы, даты, а также типы, определённые пользователем. Пустые объекты и пустые массивы тоже преобразуются вtrue
:
Boolean({}) // true
Boolean([]) // true
Boolean(function() {}) // true