2012-03-13 2 views
7

Учитывая следующееJSLint Ожидаемое {

for(var i=0; i< data.cats.length; i++) list += buildCategories(data.cats[i]); 

JSLint говорит мне

Expected '{' and instead saw 'list'. 

Есть фактический недостаток, используя более короткие обозначения вместо оберточной него фигурные скобки?

+0

Если вы уверены, что не хотите эту проверку, просто измените конфигурацию намекания, поставив «курчаво»: false, ' –

ответ

14

Это защитное программирование - использование фигурных скобок четко определяет, какие операторы предназначены для связи с for.

Если вы не используете фигурные скобки, в более позднем случае кто-то может ошибочно добавить еще одно заявление под list += buildCategories..., ожидая, что оно будет выполнено с помощью цикла for.

+9

Я не согласен со всеми правилами стиля Крокфорда, но я на 100% с этим. – Alnitak

+1

Это раздражает меня, потому что я использую for-if. 'for (var k in obj) if (obj.hasOwnProperty (k)) {...}' (или с другими фильтрами) очень, очень полезно, но шаблон вызывает это предупреждение. Я думаю, что это так же законно, как 'else if' (иначе понадобились бы скобки) –

+0

Я отлаживаю несколько тысяч строк чужого кода, поэтому мне не хватает роскоши решить, следует ли использовать« правильный стиль ». Конечно, было бы хорошо подавить эти ошибки, тем более, что JSLint не будет прогрессировать после того, как он встретится ... – pieman72

3

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

7

«Есть ли фактический недостаток использования более короткие обозначения ...»

Это может быть источником ошибок, если вы не будете осторожны о вашем коде, но без них обеспечивает более чистый код ИМО, и если вы придерживаетесь последовательных и продуманных стандартов программирования, их отсутствие не будет проблемой.

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

if (condition) 
    if (condition2) 
     inner_if() 
    else ; 
else 
    outer_if() 

Этот код еще чище, чем это IMO ...

if (condition) { 
    if (condition2) { 
     inner_if(); 
    } 
} else { 
    outer_if(); 
} 

Если кто-то, что они могут добавить еще одно заявление на if или else, то это вопрос понимания того, что должно быть исправлено ,

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


Если вы хотите более настраиваемый инструмент, вы могли бы рассмотреть jsHint.com вместо этого.

+0

Почему CW ????? –

+0

@AdamRackis: Все мои ответы теперь идут CW. Наверное, мне так нравится. –

+0

Устали от расы крысы, а? :) –

Смежные вопросы