Truthy¶
В JavaScript есть концепция truthy
, согласно которой выражения оцениваются как истинные (true
) в определенных ситуациях (например, if
условия и логические операторы &&
||
). Следующие выражения интерпретируются как истинные в JavaScript. Например, любое число, кроме 0
.
1 2 3 4 |
|
Все, что не интерпретируется как истинное, называется falsy
.
Вот таблица для справки.
Тип переменной | Когда это falsy | Когда это truthy |
---|---|---|
boolean | false | true |
string | '' (пустая строка) | любая другая строка |
number | 0 NaN | любое другое число |
null | всегда | никогда |
undefined | всегда | никогда |
Любой объект, включая пустые {} ,[] | никогда | всегда |
Явное преобразование¶
Паттерн !!
Как правило, полезно явно указывать, что значение нужно трактовать как boolean
и конвертировать его в явный boolean (один из true
|false
). Вы можете легко конвертировать значения в логические с помощью префикса !!
, например !!foo
.
Это просто двойное использование !
. Первый !
конвертирует значение (в данном примере foo
) в логический тип, но переворачивает логику (истинное -!
> false
, ложное -!
> true
). Второй !
переворачивает логику еще раз, чтобы соответствовать первоначальному значению (e.g. истинное -!
> false
-!
> true
).
Этот паттерн используется во многих случаях, например:
1 2 3 4 5 6 7 8 9 10 11 12 |
|