JSLint и "Ожидается увидеть оператор и вместо этого увидел блок". ошибка

Из-за этого я приобрел привычку заключать все свои выражения case в фигурные скобки в программировании на C, но JSLint подходит. На этом этапе он перестает проверяться.

Мой вопрос: это такая плохая практика в JS? Не нужно ли мне беспокоиться о проблеме с областью действия, потому что у JS есть область действия функции (я понимаю, как это будет иметь место, я просто хочу вескую причину не быть "последовательной" в этом вопросе)?

(Я знаю, что разные языки требуют разных практик, но я стараюсь быть как можно более последовательным в разных языках, чтобы защитить свое здравомыслие.)

1 ответ

Решение

Хороший вопрос.

Причина, по которой JSLint жалуется на это, состоит в том, что это фактически противоречит языковой спецификации для параметров переключения / случая:

http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf

https://developer.mozilla.org/en/JavaScript/Reference/Statements/switch

Компилятор JavaScript это допустит, однако JSLint гарантирует, что ваш код придерживается более строгого и правильного подмножества JavaScript. ("Хорошие биты", как говорит Дуглас Крокфорд!)

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

Ссылаясь на ссылку выше, та же проблема не возникает в JavaScript. Итак, будет работать следующее:

var x = 0;
switch(x){
    case 0:
        var y = 1;
        alert(y);
}

Смотрите это на JSFiddle: http://jsfiddle.net/LKWwB/

Наконец, что касается вашего здравомыслия, я бы отказался от той слабой власти, которую вы им оказываете. Я сделал много лет назад, и я намного счастливее за это:-)

Другие вопросы по тегам