В Javascript, если выражение if
не имеет фигурной скобки после него, следующий оператор помещается в блок if
. То есть
if(foo)
bar();
baz();
эквивалентно
if(foo) {
bar();
}
baz();
Дуглас Крокфорд рекомендует не использовать первый, потому что он сбивает с толку и может вызвать трудно отслеживаемые ошибки, если программист пытается добавить оператор в блок if
. без подтяжек. По этой причине JsLint жалуется, если вы используете первую форму.
Я использую это все время, и мне кажется, что это не проблема при условии, что вы поместите оператор в ту же строку, что и оператор if
, например:
if(foo) bar();
baz();
Это более кратко визуально, чем полная форма скобки, и у меня никогда не было путаницы с этим. Просто чтобы я мог передать JsLint и не иметь такого большого визуального шума, я иногда прибегал к использованию менее идиоматической формы, основанной на коротком замыкании оператора, например:
foo && bar();
baz();
Вы, наверное, все ждете, что я потороплюсь и спросу вопрос, так что вот оно: Считается ли вообще плохой практикой не использовать фигурные скобки в однострочных условных операторах, если вы их правильно форматируете? Зачем? Есть ли у JsLint законная причина жаловаться на это?