Ответ 1
Вы можете проверить факт с помощью
if (typeof(jsVar) == 'undefined') {
...
}
Possible Duplicate:
Detecting an undefined object property in JavaScript
Из приведенного ниже примера JavaScript
try {
if(jsVar) {
proceed();
}
}catch(e){
alert(e);
}
этот jsVar объявлен и инициализирован в другом файле.
Проблема заключается в том, что код генерирует неопределенную ошибку, когда этот код выполняется до того, как будет выполнен другой файл (где он объявлен и инициализирован). Вот почему он окружен попыткой поймать.
Какой лучший способ справиться с этой неопределенной ошибкой, чем попытка catch?
Вы можете проверить факт с помощью
if (typeof(jsVar) == 'undefined') {
...
}
Как это часто бывает с JavaScript, существует несколько способов сделать это:
typeof foo !== 'undefined'
window.foo !== undefined
'foo' in window
Первые два должны быть эквивалентными (пока foo
не затеняется локальной переменной), тогда как последний возвращает true
, если глобальная переменная определена, но не инициализирована (или явно установлена на undefined
).
В javascript следующие значения приведут к тому, что условие if завершится с ошибкой и не выполнит его оператор: null, undefined, false, NaN, число 0 и пустая строка ''.
Предполагая, что переменная jsVar является логической и мы хотим вызвать метод continue(), когда jsVar истинно, мы можем выполнить следующую проверку.
if (jsVar && jsVar == true)
proceed();
В приведенном выше фрагменте кода сначала проверяется, что jsVar определен, а затем проверяет, что его значение истинно. Условие if будет выполнено только при выполнении обоих условий.
Если jsVar не является логическим, тогда мы можем заменить соответствующую проверку вместо jsVar == true в коде выше.