undefined — объявлена, но без значения; также результат отсутствующего свойства / параметра.
Undeclared — идентификатора нет; чтение → ReferenceError. Но typeof notDefined === 'undefined' без ошибки.
let a;
console.log(a); // undefinedconsole.log(a === null); // falseconst b = null;
console.log(typeof b); // 'object'console.log(typeof c); // 'undefined' — c не объявлена// console.log(c); // ReferenceError
Итог
Проверяйте value === null и value === undefined отдельно. Не путайте «нет значения» с «нет переменной».
На практике для «пустого» ответа API часто используют null, а отсутствие поля/параметра — undefined. Сравнивайте строго (===): null == undefined истинно из‑за coercion, что маскирует различие смыслов. Для необъявленных имён безопасная проверка — только через typeof.
В чём разница между `null`, `undefined` и необъявленной переменной? · Sobeso