Является ли try / catch (один из) лучшим способом предотвращения появления ошибок, если переменная не определена? - PullRequest
3 голосов
/ 05 августа 2011

Меня предупредили, что этот пост может быть слишком субъективным, но я программирую только несколько недель, поэтому я хотел бы знать.

Пока что я 'Вы использовали операторы try / catch в моем JS, чтобы избежать выдачи ошибок в случае, если переменная не определена при запуске функции, но является ли это единственным эффективным способом сделать это?

Ответы [ 6 ]

2 голосов
/ 05 августа 2011

Если вы в браузере, вы можете проверить глобальные переменные, используя window.foo.Например:

if (window.foo === undefined)
    console.log("foo is not defined");

Если бы я читал код, я бы предпочел прочитать это, чем try { foo } catch { … }.

Также обратите внимание на тройное равенство: это необходимо, потому что, если window.fooравно null, тогда window.foo == undefined будет true , а window.foo === undefined будет false (что вы хотите).

1 голос
/ 07 августа 2011

Чтобы проверить, существует ли обычная переменная, я бы сказал, что лучше всего сравнить тип с неопределенным, например:

if (typeof(x) != "undefined") {
    // your variable exists
}
1 голос
/ 05 августа 2011

Лично я стараюсь избегать использования операторов try / catch, если есть более простое решение.

В вашем случае JS и любой другой язык предоставляют более простой способ узнать, определена ли переменная.

if (window.x === undefined)

или если переменная была определена с использованием переменной x:

if (x === undefined)
0 голосов
/ 05 августа 2011

Убедитесь, что переменная определена с помощью оператора if

На самом деле попытка catch является очень неэффективным способом проверки, если переменная не определена.Лучший способ - проверить, определена ли переменная в операторе if.

if(!someVariable === undefined){
  // Do Logic Here that requires someVariable to be defined
}
0 голосов
/ 05 августа 2011

Как правило, исключения служат для уведомления приложения о том, что допущение, сделанное программистом, не было выполнено. Например - сетевое соединение не работает, файл не существует, защита не позволяет что-либо и т. Д.

Если вам известно о том, что какая-то переменная может быть неопределенной, вам не следует использовать исключения, а обрабатывайте это в if. Или следуйте стратегии, чтобы по возможности иметь значимый объект или ценность.

0 голосов
/ 05 августа 2011

Я бы не использовал try / catch в таких обстоятельствах.Если бы он жаловался на то, что переменная не определена, я бы посмотрел, где была ошибка, и исправил бы ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...