Truthy и falsy значения в JavaScript
- Что такое truthy и falsy
- Falsy значения
- Truthy значения
- Проверка через Boolean()
- Truthy и falsy в условиях
- Когда лучше проверять явно
- Итого
В JavaScript любое значение можно проверить как true или false. Это важно для условий if, логических операторов и коротких проверок в коде.
let userName = 'Алексей';
if (userName) {
console.log('Имя указано');
}
Переменная userName содержит непустую строку. Для условия это значение считается истинным, поэтому код внутри if выполнится.
Что такое truthy и falsy
Truthy - это значения, которые при проверке ведут себя как true.
Falsy - это значения, которые при проверке ведут себя как false.
Это не значит, что значение буквально равно true или false. Например, строка ‘Привет’ - это строка, но в условии она считается истинной.
if ('Привет') {
console.log('Условие выполнится');
}
Falsy значения
В обычном коде чаще всего нужно помнить вот эти falsy значения:
false0-00n”- пустая строкаnullundefinedNaN
if (0) {
console.log('Этот код не выполнится');
}
if ('') {
console.log('Этот код тоже не выполнится');
}
Оба условия считаются ложными, поэтому сообщения не появятся в консоли.
Truthy значения
Все остальные обычные значения считаются truthy. Например:
- непустые строки;
- числа, кроме
0и-0; - объекты;
- массивы;
- функции.
if ('0') {
console.log('Строка с нулем - truthy');
}
if ([]) {
console.log('Пустой массив - truthy');
}
if ({}) {
console.log('Пустой объект - truthy');
}
Здесь все три условия выполнятся. Строка ‘0’ не является числом 0, а массивы и объекты считаются истинными, даже если внутри них нет данных.
Проверка через Boolean()
Чтобы явно посмотреть, как значение будет вести себя в условии, можно использовать Boolean().
console.log(Boolean(0));
console.log(Boolean(''));
console.log(Boolean('JavaScript'));
console.log(Boolean([]));
Результат:
false
false
true
true
Boolean() не меняет исходное значение. Он только возвращает true или false для проверки.
Truthy и falsy в условиях
Чаще всего truthy и falsy значения встречаются в if.
let message = '';
if (message) {
console.log('Сообщение есть');
} else {
console.log('Сообщение пустое');
}
Пустая строка - falsy значение, поэтому выполнится блок else.
Такую проверку удобно использовать, когда нужно понять, заполнено ли значение:
let userName = 'Анна';
if (userName) {
console.log('Привет, ' + userName);
}
Когда лучше проверять явно
Короткая проверка через truthy и falsy удобна, но не всегда подходит. Если 0 является нормальным значением, лучше сравнить явно.
let count = 0;
if (count) {
console.log('Товары есть');
} else {
console.log('Товаров нет');
}
Здесь все нормально, если 0 действительно означает отсутствие товаров.
Но если нужно проверить, что значение вообще было передано, такая запись может быть неточной:
let count = 0;
if (count !== undefined) {
console.log('Значение передано');
}
В этом примере 0 не теряется, потому что мы проверяем именно undefined, а не истинность значения.
Итого
Truthy и falsy помогают понять, как JavaScript проверяет значения в условиях. false, 0, пустая строка, null, undefined и NaN ведут себя как false. Большинство остальных значений ведут себя как true. Если значение может быть 0 или пустой строкой, подумайте, подходит ли короткая проверка, или лучше сравнить явно.