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 | |