Является ли обратный оператор switch приемлемым JavaScript? - PullRequest
6 голосов
/ 05 октября 2011

JSLint жалуется, что (true) - это weird condition.Что понятно, если бы я не использовал его в обращенном операторе switch.Так что JSLint не так или я не должен использовать операторы обратного переключения?

Спасибо за любую помощь / просветление.

Ответы [ 3 ]

5 голосов
/ 05 октября 2011

Лично я не хотел бы видеть обратное switch в кодовой базе.По сравнению с обычным if/elseif блоком он ничего не покупает, а его экзотическая природа может стать причиной путаницы.

На это также жалуется JSLint:

Вы делаете что-то неортодоксальное.Есть ли для этого веская причина?Если нет, то может быть лучше придерживаться основ.

3 голосов
/ 05 октября 2011

Третье издание стандарта ECMA-262 (поддерживается Firefox 1.0+, Google Chrome 1.0+, MSIE 5.5+ и др.) Определяет, что

switch (expression) {
    case label1:
        statements1
    .
    .
    .
}

выполняет statements1, если (expression) соответствуетlabel1.

Это означает, что ваше утверждение switch в порядке.

Я опробовал его на Firefox, Chrome и IE.Никто не жалуется ...

Редактировать:

Теперь часть предположения:

JSLint - инструмент анализа кода.Когда он видит switch (true), он предполагает, что вы не знаете, что делаете. Странно не обязательно означает неправильно ...

2 голосов
/ 17 мая 2019
numberOfColumns = Math.max(4, Math.floor(menuLinksLength / 3));

Это даст вам результаты, идентичные существующему коду.Ваш вопрос довольно двусмысленный, так как «приемлемый» - очень субъективный термин.Я лично отклонил бы любой запрос на слияние с обращенным оператором switch, потому что я на самом деле не могу вспомнить ситуацию, когда это не может быть заменено чем-то более простым и / или более легким для чтения.

...