10

Как проверить неопределённую переменную в JavaScript

18

Я хочу проверить, определена ли переменная или нет. Например, следующий код вызывает ошибку "переменная не определена":

alert( x );

Как я могу поймать эту ошибку?

5 ответ(ов)

4

Единственный способ действительно проверить, является ли переменная undefined, это сделать следующее. Помните, что undefined является объектом в JavaScript.

if (typeof someVar === 'undefined') {
  // Ваша переменная неопределена
}

Некоторые другие решения в этом обсуждении могут создать ложное впечатление, что переменная неопределена, даже если она была определена (например, со значением NULL или 0).

0

Ещё более простой и краткий вариант может выглядеть так:

if (!x) {
    // Неопределено
}

ИЛИ

if (typeof x !== "undefined") {
    // Делать что-то, так как x определено.
}

Эти варианты позволяют проверить, определена ли переменная x, в зависимости от ваших требований.

0

Технически, правильное решение будет таким (как я считаю):

typeof x === "undefined"

Иногда вы можете проявить лень и использовать

x == null

Но это приведет к тому, что как неопределенная переменная x, так и переменная x, содержащая null, вернут true.

0

Ваш код содержит небольшую ошибку в проверке переменной. В JavaScript, переменная undef, объявленная, но не инициализированная, будет иметь значение undefined. Однако сравнение с === в данном случае может не работать так, как вы ожидаете, из-за потенциальных неожиданных преобразований типов.

Вот исправленный вариант вашего кода:

function doSomething(variable) {
    if (typeof variable === 'undefined') {
        alert('Эй, задумайся, это значение не определено.');
    }
}

В этом коде мы используем оператор typeof, чтобы проверить, определена ли переменная variable. Это более надежный способ проверить, если переменная не была передана или не имеет значения.

0

Извините за "некромансию", но большинство ответов здесь путали понятия 'undefined' и 'not defined'.

  1. Undefined - переменная объявлена, но её значение не определено.
  2. Not defined - переменная даже не объявлена.

Единственный безопасный способ проверить оба случая - использовать typeof myVar === 'undefined'.

myVar === undefined проверит только случай номер (1). Если же переменная myVar вообще не была объявлена, то вы получите ошибку "myVar is not defined" для случая номер (2). Вопрос задается именно о ситуации "даже не определена" (2).

P.S. Я понимаю, что "случай 2" становится редким в современном мире ES6, но некоторые старые компоненты всё ещё живут в прошлом.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь