Ранее этим вечером я объяснял код, который написал, и несколько раз ловил себя на том, что ссылаюсь на идею истинного значения. Встретив несколько вопросов, я подумал, что это может быть прекрасной возможностью объяснить.
Хотя эта статья не будет исчерпывающим объяснением всех возможных результатов, я надеюсь показать убедительный пример использования значений «истина/ложь».
Давайте напишем 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. В данном случае мы нашли пустую строку.
Надеюсь, статья пролила немного света на интересную концепцию!