Как проверить неопределённую переменную в 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?
Почему null является объектом и в чем разница между null и undefined?