В JavaScript undefined и undeclared — это два разных концепта, которые легко спутать:
let declaredVar; // объявлена, значение undefined
console.log(declaredVar); // → undefined
console.log(undeclaredVar); // → ReferenceError: undeclaredVar is not defined
typeofОператор typeof обрабатывает эти два случая по-разному:
typeof возвращает "undefined"typeof тоже возвращает "undefined" — но ключевое отличие в том, что он не выбрасывает ReferenceErrorlet declaredVar;
typeof declaredVar; // → "undefined"
typeof undeclaredVar; // → "undefined" (ошибка не выброшена)
То, что typeof не падает на undeclared переменных, делает его надёжным способом проверки в ситуациях, когда ты не уверен, существует ли переменная — например, при проверке опциональных глобальных переменных в браузере:
if (typeof myLibrary !== "undefined") {
// безопасно использовать myLibrary
}
Прямая ссылка вроде if (myLibrary) выбросила бы ReferenceError, если бы myLibrary никогда не была объявлена, поэтому typeof — это предпочтительный способ защитной проверки.
Неинициализированная переменная — это переменная, которая была объявлена, но которой не было присвоено значение, а необъявленная переменная никогда не была объявлена ни в одной доступной области видимости.
Новый — ещё не проверен сообществом
Вы