Автор оригинала: FreeCodeCamp Community Member.
Логический
Логины являются примитивным типом данных, обычно используемыми на языках компьютерных программиров. По определению, логический имеет два возможных значения: правда
или ложь
Отказ
В JavaScript часто неявное принуждение типа для логика. Если например, у вас есть если утверждение, которое проверяет определенное выражение, это выражение будет принуждено к логическому вопросу:
const a = 'a string'; if (a) { console.log(a); // logs 'a string' }
Есть только несколько значений, которые будут принуждены к ложливому:
- false (не очень принужден, как это уже ложно)
- ноль
- неопределенный
- Нан
- 0
- “” (пустая строка)
Все остальные значения будут принуждены к true. Когда значение принуждено к логическому новому, мы также называем это «ложное», либо «правдоподобное».
Один из способов того, что используется принуждение к принуждению, является использованием операторов или (
) и (
&&
const a = 'word'; const b = false; const c = true; const d = 0 const e = 1 const f = 2 const 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'
Как вы можете видеть, или Оператор проверяет первый операнд. Если это правда или правда, он немедленно возвращает его (именно поэтому мы получаем «слово» в первом случае и правда во втором случае). Если это не правда или правда, он возвращает второй операнд (вот почему мы получаем «слово» в третьем случае).
С помощью и оператором он работает аналогично, но для «и« быть правдой, обе операнды должны быть правдивыми ». Так что он всегда будет возвращать второй операнд, если оба являются True/Landy, в противном случае он вернет ложь. Вот почему в четвертом случае мы получаем истину и в последнем случае мы получаем «слово».
Логический объект
Существует также родной объект JavaScript, который обернутся вокруг значения. Значение, передаваемое в качестве первого параметра, преобразуется в логическое значение, если необходимо. Если значение опущено, 0, -0, null, false, nan, undefined или пустая строка (“”), объект имеет начальное значение false. Все остальные значения, включая любой объект или строку «ложь», создают объект с начальным значением TRUE.
Не путайте примитивные логические значения True и False с истинными и ложными значениями логического объекта.
Подробнее
Любой объект, значение которого не является неопределенным или NULL, включая логический объект, значение которого является ложным, оценивает true при передаче в условное утверждение. Если true, это будет выполнять функцию. Например, условие следующего, если оператор оценивает true:
const x = new Boolean(false); if (x) { // this code is executed }
Это поведение не распространяется на логические примитивы. Например, условие следующего, если оператор оценивает false:
const x = false; if (x) { // this code is not executed }
Не используйте логический объект для преобразования не-логического значения в логическое значение. Вместо этого используйте Boolean в качестве функции для выполнения этой задачи:
const x = Boolean(expression); // preferred const x = new Boolean(expression); // don't use
Если вы укажете любой объект, включая логический объект, значение которого является ложным, в качестве начального значения логического объекта, новый логический объект имеет значение true.
const myFalse = new Boolean(false); // initial value of false const g = new Boolean(myFalse); // initial value of true const myString = new String('Hello'); // string object const s = new Boolean(myString); // initial value of true
Не используйте логический объект вместо булева примитивного.