Boolean
TypeScript
const someBool: boolean = true;
true;
false;
// строки
Boolean('abc'); // true
Boolean(' '); // true - пробел
Boolean(''); // false - пустая строка
// числа
Boolean(1); // true
Boolean(123); // true
Boolean(-10); // true
Boolean(0); // false - ноль
// спец. типы
Boolean(Infinity); // true
Boolean(null); // false
Boolean(undefined); // false
Boolean(NaN); // false
// объекты и массивы
Boolean({}); // true
Boolean([]); // true
// функции
Boolean(() => null); // true
Булевы операторы
Логическое И
Если левая часть true
, то дальше проверяется еще правая часть.
true && true; // true (которое правее)
true && false; // false (которое правее)
false && true; // false (которое левее)
'1' && '2' && '3' // 3
'123' && 123; // 123
Логическое ИЛИ
Если левая часть true
, то дальше не проверяется, а сразу возвращается true
.
true || true; // true (которое левее)
true || false; // true (которое левее)
false || true; // true (которое правее)
'1' || '2' || '3'; // 1
'123' || 123; // '123'
Оператор ??
- Работает также как и оператор
||
, но только в случае сnull
иundefined
, во всех остальных случаях возвращает левую часть. - Если слева null или undefined, то берем правое значение, в остальных случаях левое.
null ?? 123; // 123
undefined ?? 123; // 123
0 ?? 123; // 0
false ?? 123; // false
'' ?? 123; // ''
null || 123; // 123
undefined || 123; // 123
0 || 123; // 123
false || 123; // 123
'' || 123; // 123
Логическое присваивание
&&=
let a = 0;
let b = 2;
// 1 вариант
if (a) {
a = b;
}
// 2 вариант
a && a = b;
// 3 вариант
// Будет присвоение только, если a === true (a И b)
// Если a === true, то присвоиться b, если не true, то a останется как есть
a &&= b;
||=
let a = 1;
let b = 2;
a || a = b;
// Будет присвоение в любом случае (a ИЛИ b)
// Если a === true, то останется a, если не true, то присвоиться b
a ||= b; // 1
??=
let a = null;
let b = 2;
// Будет присвоение в любом случае (a ИЛИ b)
// Если a === null || undefined, то присвоиться b, иначе останется a
a ?? a = b;
Оператор ! - переворачивание логики.
!true; // false
!1; // false
!123; // false
!'123'; // false
!''; // true
!0; // true
!false; // true
!null; // true
!undefined; // true
Операторы сравнения
1 > 0; // true
1 >= 0; // true
1 < 0; // false
1 <= 0; // false
Нестрогое сравнение
Тип данных не учитывается.
1 == '1'; // true
1 != '1'; // false
Строгое сравнение (best practice)
Тип данных учитывается.
1 === '1'; // false
1 !== '1'; // true
Двойное отрицание.
Обычно используется для конвертации любого типа в булевый тип, но лучше использовать Boolean
!!'true'; // true
!!''; // false
!!123; // true
!![].length;