JSLint и «Ожидается увидеть оператор и вместо этого увидел блок». ошибка - PullRequest
1 голос
/ 12 января 2011

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

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

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

1 Ответ

4 голосов
/ 25 января 2011

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

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

http://www.ecma - международный.org / публикации / файлы / 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/

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

...