Как обрабатывать 'undefined' в javascript

Possible Duplicate:
Detecting an undefined object property in JavaScript

Из приведенного ниже примера JavaScript

 try {
    if(jsVar) {
     proceed();
      }
 }catch(e){
      alert(e);
 }

этот jsVar объявлен и инициализирован в другом файле.

Проблема заключается в том, что код генерирует неопределенную ошибку, когда этот код выполняется до того, как будет выполнен другой файл (где он объявлен и инициализирован). Вот почему он окружен попыткой поймать.

Какой лучший способ справиться с этой неопределенной ошибкой, чем попытка catch?

Ответы

Ответ 1

Вы можете проверить факт с помощью

if (typeof(jsVar) == 'undefined') {
  ...
}

Ответ 2

Как это часто бывает с JavaScript, существует несколько способов сделать это:

typeof foo !== 'undefined'
window.foo !== undefined
'foo' in window

Первые два должны быть эквивалентными (пока foo не затеняется локальной переменной), тогда как последний возвращает true, если глобальная переменная определена, но не инициализирована (или явно установлена ​​на undefined).

Ответ 3

В javascript следующие значения приведут к тому, что условие if завершится с ошибкой и не выполнит его оператор: null, undefined, false, NaN, число 0 и пустая строка ''.

Предполагая, что переменная jsVar является логической и мы хотим вызвать метод continue(), когда jsVar истинно, мы можем выполнить следующую проверку.

if (jsVar && jsVar == true)
    proceed();

В приведенном выше фрагменте кода сначала проверяется, что jsVar определен, а затем проверяет, что его значение истинно. Условие if будет выполнено только при выполнении обоих условий.

Если jsVar не является логическим, тогда мы можем заменить соответствующую проверку вместо jsVar == true в коде выше.