JavaScript

JavaScript. Как проверить, была ли определена переменная?

Можно ли сделать проверку без использования try/catch, ведь если переменная не была определена, то я получаю ошибку Uncaught ReferenceError: x is not defined?
Олег Луца
Олег Луца
346
Вообще-то это диагноз, пытаться использовать переменную, которая не определена. Другое дело проверить перед объявлением нет ли уже переменной с таким же именем. С тех пор, как стандартом определено для использования объявления ключевых слов let и const, в использовании var нет никакой необходимости и незачем выполнять проверку, так как дважды в одном пространстве имён повторное объявление невозможно. typeof даст одинаковый результат как для не инициализированной переменной, так и для не объявленной. Проверка на undefined возможна только в случаях с использованием ключевого слова var в предполагаемом пространстве имён. JavaScript может позволить себе объявить и одновременно инициализировать переменную без использования ключевых слов. В этом случае вы создадите поле глобального объекта, то есть объекта window. undefined не является ключевым словом и его в нестрогом режиме можно переопределить с использованием ключевого слова var (и за что получить канделябром по голове). Кроме того переменная может хранить ссылку на несуществующий объект, то есть null, что также даст вам false. А также переменная может хранить значение NaN, которое означает что присваиваемое значение не число, и которое не равно даже самому себе, и которое typeof определит как тип "number" (вывих мозга – это то, что автор языка преследовал при его создании). Так что используйте строгий режим, let, const и Debugger, и флаг вам в руки :)
С 1 Мая!
Роман Макаров
Роман Макаров
65 567
Лучший ответ
window['xxx']===undefined&&alert('Ну нет такой переменой !!!')