Как проверить неопределённую переменную в JavaScript
Я хочу проверить, определена ли переменная или нет. Например, следующий код вызывает ошибку "переменная не определена":
alert( x );
Как я могу поймать эту ошибку?
5 ответ(ов)
Единственный способ действительно проверить, является ли переменная undefined, это сделать следующее. Помните, что undefined является объектом в JavaScript.
if (typeof someVar === 'undefined') {
// Ваша переменная неопределена
}
Некоторые другие решения в этом обсуждении могут создать ложное впечатление, что переменная неопределена, даже если она была определена (например, со значением NULL или 0).
Ещё более простой и краткий вариант может выглядеть так:
if (!x) {
// Неопределено
}
ИЛИ
if (typeof x !== "undefined") {
// Делать что-то, так как x определено.
}
Эти варианты позволяют проверить, определена ли переменная x, в зависимости от ваших требований.
Технически, правильное решение будет таким (как я считаю):
typeof x === "undefined"
Иногда вы можете проявить лень и использовать
x == null
Но это приведет к тому, что как неопределенная переменная x, так и переменная x, содержащая null, вернут true.
Ваш код содержит небольшую ошибку в проверке переменной. В JavaScript, переменная undef, объявленная, но не инициализированная, будет иметь значение undefined. Однако сравнение с === в данном случае может не работать так, как вы ожидаете, из-за потенциальных неожиданных преобразований типов.
Вот исправленный вариант вашего кода:
function doSomething(variable) {
if (typeof variable === 'undefined') {
alert('Эй, задумайся, это значение не определено.');
}
}
В этом коде мы используем оператор typeof, чтобы проверить, определена ли переменная variable. Это более надежный способ проверить, если переменная не была передана или не имеет значения.
Извините за "некромансию", но большинство ответов здесь путали понятия 'undefined' и 'not defined'.
- Undefined - переменная объявлена, но её значение не определено.
- Not defined - переменная даже не объявлена.
Единственный безопасный способ проверить оба случая - использовать typeof myVar === 'undefined'.
myVar === undefined проверит только случай номер (1). Если же переменная myVar вообще не была объявлена, то вы получите ошибку "myVar is not defined" для случая номер (2). Вопрос задается именно о ситуации "даже не определена" (2).
P.S. Я понимаю, что "случай 2" становится редким в современном мире ES6, но некоторые старые компоненты всё ещё живут в прошлом.
Как определить, является ли переменная 'undefined' или 'null'?
Проверка существования переменной в JavaScript (определена/инициализирована)
Как проверить, является ли переменная массивом в JavaScript?
Определение глобальной переменной в функции JavaScript
Как использовать переменную в качестве ключа в объектном литературе JavaScript?