freeCodeCamp/guide/russian/javascript/booleans/index.md

102 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: Boolean
localeTitle: логический
---
## логический
Булевы - это примитивный тип данных, обычно используемый в компьютерных языках программирования. По определению логическое имеет два возможных значения: `true` или `false` .
В Javascript часто подразумевается принудительное принуждение типа к логическому. Если, например, у вас есть оператор if, который проверяет определенное выражение, это выражение будет принудительно выполнено с помощью логического выражения:
```javascript
var a = 'a string';
if (a) {
console.log(a); // logs 'a string'
}
```
Есть только несколько значений, которые будут принудительно применены к false:
* false (на самом деле не принудительно, поскольку оно уже неверно)
* ноль
* не определено
* NaN
* 0
* '' (пустой строки)
Все остальные значения будут привязаны к true. Когда значение принуждается к логическому, мы также называем это «ложным» или «правдивым».
Одним из способов использования этого типа является использование операторов или ( `||` ) и ( `&&` ):
```javascript
var a = 'word';
var b = false;
var c = true;
var d = 0
var e = 1
var f = 2
var g = null
console.log(a || b); // 'word'
console.log(c || a); // true
console.log(b || a); // 'word'
console.log(e || f); // 1
console.log(f || e); // 2
console.log(d || g); // null
console.log(g || d); // 0
console.log(a && c); // true
console.log(c && a); // 'word'
```
Как вы можете видеть, оператор _or_ проверяет первый операнд. Если это верно или правдиво, оно немедленно возвращает его (именно поэтому мы получаем слово в первом случае & true во втором случае). Если это неверно или правдиво, он возвращает второй операнд (именно поэтому мы получаем «слово» в третьем случае).
С оператором и он работает аналогичным образом, но для «и», чтобы быть правдой, оба операнда должны быть правдивыми. Поэтому он всегда будет возвращать второй операнд, если оба они истинны / правдивы, иначе он вернет false. Вот почему в четвертом случае мы получаем истину, а в последнем случае получаем слово.
## Булевский объект
Существует также собственный JavaScript-объект, который обтекает значение. Значение, переданное как первый параметр, при необходимости преобразуется в булево значение. Если значение опущено, 0, -0, null, false, NaN, undefined или пустая строка (""), объект имеет начальное значение false. Все остальные значения, включая любой объект или строку «false», создают объект с начальным значением true.
Не путайте примитивные логические значения true и false с истинными и ложными значениями объекта Boolean.
## Подробнее
Любой объект, значение которого не является неопределенным или null, включая логический объект, значение которого является ложным, оценивается как true при передаче в условный оператор. Если true, это приведет к выполнению функции. Например, условие в следующем выражении if равно true:
```javascript
var x = new Boolean(false);
if (x) {
// this code is executed
}
```
Это поведение не относится к булевым примитивам. Например, условие в следующем выражении if равно false:
```javascript
var x = false;
if (x) {
// this code is not executed
}
```
Не используйте объект Boolean для преобразования небулевого значения в логическое значение. Вместо этого используйте Boolean как функцию для выполнения этой задачи:
```javascript
var x = Boolean(expression); // preferred
var x = new Boolean(expression); // don't use
```
Если вы укажете любой объект, включая логический объект, значение которого является ложным, в качестве начального значения булева объекта, новый объект Boolean имеет значение true.
```javascript
var myFalse = new Boolean(false); // initial value of false
var g = new Boolean(myFalse); // initial value of true
var myString = new String('Hello'); // string object
var s = new Boolean(myString); // initial value of true
```
Не используйте Boolean-объект вместо булевского примитива.
### Ресурсы
* [Логический объект](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)
* [Логический объект](https://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html)