Ранее этим вечером я объяснял код, который написал, и несколько раз ловил себя на том, что ссылаюсь на идею истинного значения. Встретив несколько вопросов, я подумал, что это может быть прекрасной возможностью объяснить.

Хотя эта статья не будет исчерпывающим объяснением всех возможных результатов, я надеюсь показать убедительный пример использования значений «истина/ложь».

Давайте напишем JavaScript!

const x = 0;

if (x == true) {
  console.log(`x == true`);
} else if (x == false) {
  console.log(`x == false`);
} else if (x === false) {
  console.log(`x === false`);
}
//Output: x == false

Сейчас здесь происходит несколько интересных вещей. Если мы запустим этот код, мы обнаружим, что число ноль равно false, но не строго равно false.

Конечно, есть место для разговора о разнице между равным и строго равным, но суть здесь в том, что число ноль оценивается как ложное. Давайте рефакторим этот код.

const x = 0;

if (x) {
  console.log(`x == true`);
} else if (!x) {
  console.log(`x == false`);
}
//Output: x == false

Выше мы упростили условные операторы. Если код в круглых скобках оценивается как истинный, не обязательно истинный, то будет выполняться код в фигурных скобках.

Дополнительная документация по ложным значениям доступна здесь, а соответствующая документация по истинным значениям — здесь.

Теперь давайте рассмотрим более сложный пример.

const valuesToAssess = [true, Infinity, 1.73, "true", "", []];
let numTruthyValues = 0;
const falseValueWarning = () => {
  console.log(`A falsy value has been discovered.`);
};
valuesToAssess.forEach((value) => {
  value ? numTruthyValues++ : falseValueWarning();
});
console.log(`${numTruthyValues} truthy values have been discovered.`);
/* Output:
A falsy value has been discovered within the array.
5 truthy values have been discovered.
*/

В приведенном выше примере мы используем цикл forEach для перебора массива. Для каждого значения в массиве мы вызываем условный (тройной) оператор, чтобы определить, является ли значение истинным или ложным. Это отличный способ определить потенциально неверные значения, такие как null, NaN или undefined. В данном случае мы нашли пустую строку.

Надеюсь, статья пролила немного света на интересную концепцию!