undefined — значение по умолчанию для неинициализированных переменных 🆕 null — специальное значение, означающее “ничего” или “пусто” 🚫
let a; // undefined
let b = null; // null
console.log(a); // undefined
console.log(b); // nullnull и undefined — как два вида “пустоты”: один случайный, другой intentional! 📦
undefined — как комната, которую ещё не заселили:
// Переменная объявлена, но не инициализирована
let name;
console.log(name); // undefined
// Функция ничего не возвращает
function doNothing() {}
console.log(doNothing()); // undefined
// Нет такого свойства в объекте
const user = {name: 'Иван'};
console.log(user.age); // undefinedКогда получаем undefined:
null — как пустая коробка, которую нарочно оставили пустой:
// Специально указываем "ничего"
let name = null;
console.log(name); // null
// Очищаем значение
let user = {name: 'Иван'};
user.name = null; // Явно очищаем
// Не найдено
function findUser(id) {
// Если не нашли пользователя
return null; // Явно указываем "не найден"
}Когда используем null:
let value;
// ❌ Плохо — может сломаться
if (value === undefined) { /* ... */ }
// ✅ Хорошо — безопасно
if (typeof value === 'undefined') { /* ... */ }
// ✅ Ещё лучше — коротко
if (value === void 0) { /* ... */ }let value = null;
// ✅ Просто сравниваем
if (value === null) { /* ... */ }
// ✅ Или проверяем ложность
if (value == null) { /* ... */ } // Работает и для null, и для undefinedconsole.log(null == undefined); // true (нестрогое сравнение)
console.log(null === undefined); // false (строгое сравнение)
console.log(null == 0); // false
console.log(null == ''); // false
console.log(null == false); // false
console.log(undefined == 0); // false
console.log(undefined == ''); // false
console.log(undefined == false); // false// ✅ Не инициализировали переменную
let name;
// ✅ Нет значения для возврата
function process() {
// Ничего не возвращаем
}
// ✅ Нет свойства
const obj = {};
console.log(obj.nonExistent); // undefined// ✅ Явно указываете "пусто"
let user = null; // Пока нет пользователя
// ✅ Очищаете значение
user = {name: 'Иван'};
user = null; // Явно очистили
// ✅ Не нашли данные
function findUser(id) {
// Поиск в базе
if (!found) {
return null; // Явно "не найден"
}
}// ❌ Ошибка — не понимать разницу
let value1 = null;
let value2;
if (value1 == value2) {
console.log('Одинаковые'); // true! Но это разные вещи
}
// ✅ Правильно — проверять точно
if (value1 === null && value2 === undefined) {
console.log('Разные типы пустоты');
}// ❌ Ошибка — нестрогое сравнение
if (value == null) { /* ... */ } // Сработает и для null, и для undefined
// ✅ Правильно — строгое сравнение
if (value === null) { /* ... */ } // Только для nullПонимание разницы между null и undefined помогает писать более точный код! 💪
Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪