Готовый перевод 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

Настройки

Готово:

100.00% КП = 1.0