Дифференциация "not defined" от "undefined"
Как различить случаи, когда:
- Переменная объявлена, но имеет значение undefined:
const obj = undefined
console.log( typeof obj === 'undefined'); // true
console.log(obj); // undefined
- Переменная не объявлена:
console.log( typeof obj === 'undefined'); // true
console.log(obj); // Uncaught ReferenceError ReferenceError: obj is not defined
Наверное, можно ловить исключение, выполняя obj === undefined, и делать вывод на на основании этого. Но, наверняка, есть более простой способ?
Ответы (1 шт):
Автор решения: EzioMercer
→ Ссылка
Дело в том что когда переменная не объявлена то она выкидывает Error, а если объявлена то никаких ошибок нет. А если есть Error то мы легко можем его поймать в try catch блоке и сделать необходимые действия. Ниже пример:
try {
notDefined;
console.log('Defined with value undefined 1');
} catch {
console.log('Is not defined 1');
}
const definedWithUndefinedValue = undefined;
try {
definedWithUndefinedValue;
console.log('Defined with value undefined 2');
} catch {
console.log('Is not defined 2');
}