Javascript: объявление переменной до условного результата? - PullRequest
1 голос
/ 26 августа 2008

Мой JavaScript довольно номинален, поэтому, когда я увидел эту конструкцию, я был немного озадачен:

var shareProxiesPref = document.getElementById("network.proxy.share_proxy_settings");
shareProxiesPref.disabled = proxyTypePref.value != 1;

Не лучше ли сделать if на proxyTypePref.value, а затем объявить переменную внутри результата, только если вам это нужно?

(Между прочим, я также обнаружил, что эту форму очень трудно читать по сравнению с обычным использованием. Был набор из двух или трех из этих условий, вместо выполнения одного if с блоком операторов в результате.)


UPDATE:

Ответы были очень полезными и просили больше контекста. Фрагмент кода из Firefox 3, поэтому вы можете увидеть код здесь:

http://mxr.mozilla.org/firefox/source/browser/components/preferences/connection.js

По сути, когда вы смотрите на окно настроек Connect в Firefox, щелкнув прокси mode (переключатели), вызывает различные элементы формы для включения | отключения.

Ответы [ 3 ]

1 голос
/ 26 августа 2008

Это зависит от контекста этого кода. Если он работает при загрузке страницы, то лучше поместить этот код в блок if.

Но если это часть функции проверки и поле переключается между включенным и отключенным в течение всего срока жизни страницы, то этот код имеет смысл.

Важно помнить, что отключенное значение false также изменяет состояние страницы.

1 голос
/ 26 августа 2008

(Кстати, я также обнаружил, что эту форму очень трудно читать по сравнению с обычным использованием.

Не обязательно, хотя это была и моя первая мысль. Код должен всегда подчеркивать свою функцию, особенно если он имеет побочные эффекты. Если писатель намеревался подчеркнуть назначение на sharedProxiesPref.disabled, то эй, катись с ним. С другой стороны, могло бы быть яснее, что действие, выполняемое здесь, заключается в отключении объекта, и в этом случае условный блок был бы лучше.

0 голосов
/ 26 августа 2008

Трудно сказать, что лучше делать без контекста.

Если этот код выполняется каждый раз, когда изменяется proxyTypePref, то вам всегда нужно устанавливать shareProxiesPref.disabled.

Я бы согласился, что оператор if был бы немного более читабельным, чем текущий код.

Не лучше ли сделать if на proxyTypePref.value, а затем объявить переменную внутри результата, только если вам это нужно?

Если вы говорите строго об объявлении переменной, то не имеет значения, поместили ли вы ее в оператор if. Любая переменная Javascript, объявленная внутри функции, находится в области действия всей функции, независимо от того, где она объявлена.

Если вы говорите о выполнении document.getElementById, тогда да, гораздо лучше не делать этот вызов, если вам не нужно.

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