Готовый перевод Modern JS Cheatsheet / Памятка по современному JavaScript: Истина / Ложь
### Истина / Ложь
В JavaScript "истинность" или "ложность" значения определяется при вычислении этого значения в булевом контексте. Примером булева контекста может быть вычисление в условии ```if```:
Любое значение будет приведено к ```true (истина)```, кроме:
- false (ложь)
- 0
- "" (пустая строка)
- null
- undefined
- NaN
Вот примеры *булева контекста*:
- значение условия ```if```
```js
if (myVar) {}
```
Значение ```myVar``` может быть любым [объектом первого класса](https://en.wikipedia.org/wiki/First-class_citizen) (переменная, функция, логическое значение), но оно будет переведено в логическое значение, поскольку оно вычисляется в булевом контексте.
- После логического оператора **NOT** ```!```
Этот оператор возвращает значение "ложь", если его единственный операнд может быть преобразован к значению "истина"; иначе он возвращает значение "истина".
```js
!0 // "истина" -- 0 - это "ложь", поэтому вернется "истина"
!!0 // "ложь" -- 0 - это "ложь", следовательно !0 возвращает истину, а !(!0) возвращает "ложь"
!!"" // "ложь" -- пустая строка - "ложь", поэтому НЕ (НЕ "ложь") равно "истина"
```
- Конструктор объектов типа *Boolean*
```js
new Boolean(0) // "ложь"
new Boolean(1) // "истина"
```
- Тернарный оператор
```js
myVar ? "истина" : "ложь"
```
Значение myVar вычисляется в булевом контексте.
Переведено на Нотабеноиде
http://notabenoid.org/book/70916/382539
Переводчики: a_popova
Настройки
Готово:
