Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

3 способа проверить, определена ли переменная в Javascript

00 голосов
0

1. Статусы переменной

Переменная может быть определена или не определена. 

Переменная будет определена, когда она была определена специальным оператором в текущей области видимости (scope). Эти операторы - let, var и const.

Примеры:

const pi = 3.14; // pi определена
let result;      // result определен
 
Переменная может быть инициализирована или не инициализирована.
 
Переменная становится инициализированной, когда её присвоили какое-то значение. Например:
 
const pi = 3.14;   // pi инициализирована
let result; // result не инициализирован

 

2. Проверка с помощью typeof

Typeof определяет тип переменной ('number', 'string', 'function'). Если переменная не определена - typeof возвращает 'undefined'.

if (typeof myVar === 'undefined') {
  // myVar не определена ИЛИ не инициализирована
} else {
  // myVar определена И инициализирована
}
 
3. Проверка try / catch
 
Ошибку доступа к переменной, которая не определна, можно поймать в блоке try / catch. При этом инициализирована ли переменная в данном случае - не определена.
 
try {
  missingVar;
  console.log('missingVar определена')
} catch(e) {
  e; // => ошибка типа ReferenceError
  console.log('missingVar не определена');
}
 
4. Использя window.hasOwnProperty
 
Если переменная определена на глобальном уровне видимости - она "автоматически" становится свойством объекта верхнего уровня window. Таким образом, можно проверить наличие свойства с помощью объектного метода hasOwnProperty. Если переменная не определена - то и свойства такого у window нет.
 
// Глобальная область видимости, НЕ внутри других функций
var num = 19;
function greet() {
  return 'Hello!';
}
window.hasOwnProperty('num');   // => true
window.hasOwnProperty('greet'); // => true
 
 
спросил 25 Окт, 22 от root (25,590 баллов)

Ваш ответ

Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

Похожие вопросы