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