Фигурные скобки
Навязывание согласованного стиля использования фигурных скобок для всех операторов управления
Некоторые проблемы, обнаруженные этим правилом, автоматически исправляются с помощью параметра --fix командной строки
JavaScript позволяет опускать фигурные скобки, когда блок содержит только одну инструкцию. Однако многие считают лучшей практикой никогда не опускать фигурные скобки вокруг блоков, даже когда они необязательны, потому что это может привести к ошибкам и снижает ясность кода. Поэтому следующее:
if (foo) foo++;
Можно переписать как:
if (foo) {
foo++;
}
Тем не менее, некоторые предпочитают использовать скобки только тогда, когда выполняется более одной инструкции.
Подробное описание правила
Это правило направлено на предотвращение ошибок и повышение ясности кода путем обеспечения того, что операторы блоков заключены в фигурные скобки. Оно будет предупреждать при обнаружении блоков, которые опускают фигурные скобки.
Параметры
all
Примеры неправильного кода для параметра по умолчанию "all":
/*eslint curly: "error"*/
if (foo)
while (bar)
if (foo) {
baz();
} else
Примеры правильного кода для параметра по умолчанию "all":
/*eslint curly: "error"*/
if (foo) {
foo++;
}
while (bar) {
baz();
}
if (foo) {
baz();
} else {
qux();
}
multi
По умолчанию, это правило предупреждает всякий раз, когда if, else, for, while, или do используются без операторов блоков в качестве своего тела. Однако вы можете указать, что операторы блоков должны использоваться только тогда, когда в блоке есть несколько операторов, и предупреждать, когда в блоке есть только один оператор.
Примеры неправильного кода для параметра "multi":
/*eslint curly: ["error", "multi"]*/
if (foo)
if (foo) bar();
else
while (true)
for (var i=0; i < items.length; i++)
Примеры правильного кода для параметра "multi":
/*eslint curly: ["error", "multi"]*/
if (foo) foo++;
else foo();
while (true) {
doSomething();
doSomethingElse();
}
многострочный
В качестве альтернативы, вы можете смягчить правило, разрешая использование фигурных скобок для одиночных if, else if, else, for, while, или do, сохраняя при этом требование использовать фигурные скобки для других случаев.
Примеры неправильного кода для параметра "multi-line":
/*eslint curly: ["error", "multi-line"]*/
if (foo)
else
if (foo)
Примеры правильного кода для параметра "multi-line":
/*eslint curly: ["error", "multi-line"]*/
if (foo) foo++; else doSomething();
if (foo) foo++;
else if (bar) baz()
else doSomething();
do something();
while (foo);
while (foo
&& bar) baz();
if (foo) {
foo++;
}
if (foo) { foo++; }
while (true) {
doSomething();
doSomethingElse();
}
multi-or-nest
Вы можете использовать другую конфигурацию, которая требует использования фигурных скобок для if, else if, else, for, while, или do, если их тело содержит только одну однострочную инструкцию. И требует фигурных скобок во всех остальных случаях.
Примеры неправильного кода для параметра "multi-or-nest":
/*eslint curly: ["error", "multi-or-nest"]*/
if (!foo)
while (true)
if (foo)
while (true)
for (var i = 0; foo; i++)
Примеры правильного кода для параметра "multi-or-nest":
/*eslint curly: ["error", "multi-or-nest"]*/
if (!foo) {
foo = {
bar: baz,
qux: foo
};
}
while (true) {
if(foo)
doSomething();
else
doSomethingElse();
}
if (foo)
foo++;
while (true)
doSomething();
for (var i = 0; foo; i++)
doSomething();
Для однострочных инструкций, предваряемых комментарием, фигурные скобки разрешены, но не обязательны.
Примеры дополнительного правильного кода для параметра "multi-or-nest":
/*eslint curly: ["error", "multi-or-nest"]*/
if (foo)
// some comment
bar();
if (foo) {
// some comment
bar();
}
Согласованный
При использовании любого из multi* параметров, вы можете добавить параметр, чтобы обеспечить использование фигурных скобок для всех операторов в if, else if и else цепочке.
Примеры неправильного кода для параметров "multi", "consistent":
/*eslint curly: ["error", "multi", "consistent"]*/
if (foo) {
bar();
baz();
} else
if (foo)
else if (faa)
else {
other();
things();
}
if (true)
foo();
else
if (foo)
Примеры правильного кода для параметров "multi", "consistent":
/*eslint curly: ["error", "multi", "consistent"]*/
if (foo) {
bar();
baz();
} else {
buz();
}
if (foo) {
bar();
} else if (faa) {
bor();
} else {
other();
things();
}
if (true)
foo();
else
baz();
if (foo)
foo++;
Когда не следует его использовать
Если у вас нет строгих соглашений о том, когда использовать операторы блоков, а когда нет, вы можете безопасно отключить это правило.
Версия
Это правило было введено в ESLint v0.0.2.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/curly