Сведения о вопросе

Junior

20:10, 24th August, 2020

Теги

javascript    

Javascript: объявление переменной перед условным результатом?

Просмотров: 351   Ответов: 3

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

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

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

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


UPDATE:

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

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

В принципе, когда вы смотрите на окно настроек подключения в Firefox, щелчок по режимам прокси (переключателям) вызывает включение|отключение различных элементов формы.



  Сведения об ответе

PIRLO

01:00, 21st August, 2020

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

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


  Сведения об ответе

SEEYOU

23:48, 21st August, 2020

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

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

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


  Сведения об ответе

LIZA

21:06, 1st October, 2020

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

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

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

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться