Истинные и ложные ценности

Ложные значения — это значения, которые не совсем ложны, но станут ложными, когда мы попытаемся преобразовать их в логическое значение.

В JavaScript есть только пять ложных значений: null, undefined, ‘ ’, NaN, 0.

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

// <5 falsy values> : 0, '', undefined, null, NaN

console.log(Boolean(0)); //false
console.log(Boolean(undefined)); //false
console.log(Boolean("Amy")); //true
console.log(Boolean({})); //true
console.log(Boolean("")); //false

Два сценария JavaScript, выполняющих приведение типов к логическим значениям

На практике преобразование в логическое всегда является неявным, а не явным, или, другими словами, всегда является типизированным принуждением, которое JavaScript выполняет автоматически за кулисами.

Но когда именно JavaScript выполняет приведение типов к логическим значениям? Это происходит по двум сценариям.

Во-первых, при использовании логических операторов, а во-вторых, в логическом контексте, например, в условии оператора if-else.

как работает принуждение типа в условии if-else?

// <1>
const money = 0;
if (money) {
  console.log("Don't spend it all:( ");
} else {
  console.log("You should get a job!!");
}
//You should get a job!!



// <2>
let height;
if (height) {
  console.log("YAY! Height is defined!");
} else {
  console.log("Height is UNDEFINED!");
}
//Height is UNDEFINED!

‹2› Второй вариант использования этих истинных и ложных значений — проверить, действительно ли переменная определена или нет.

Переменная высоты в этом логическом контексте будет автоматически преобразована в логическое значение. Поскольку высота не определена, а неопределенное значение является ложным, высота здесь будет ложной. Следовательно, блок else будет выполнен.

из моего конспекта лекции "Полный курс JavaScript".