Spec-Zone.ru › ESLint

curly

Обеспечивает единообразный стиль фигурных скобок во всех управляющих конструкциях

🔧 Можно исправить автоматически

Некоторые проблемы, о которых сообщает это правило, можно исправить автоматически с помощью параметра командной строки --fix

❄️ Заморожено

В настоящее время это правило заморожено, и предложения по новым функциям не принимаются.

В JavaScript можно опускать фигурные скобки, если блок содержит только одну инструкцию. Однако многие считают хорошей практикой никогда не опускать фигурные скобки вокруг блоков, даже если они необязательны, поскольку это может привести к ошибкам и ухудшает читаемость кода. Таким образом, следующий код:

if (foo) foo++;

Можно переписать так:

if (foo) {
    foo++;
}

Однако некоторые предпочитают использовать скобки только тогда, когда выполняется более одной инструкции.

Подробнее о правиле

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

Параметры

all

Примеры неправильного кода для параметра по умолчанию "all":

Открыть в песочнице
/*eslint curly: "error"*/

if (foo) foo++;

while (bar)
    baz();

if (foo) {
    baz();
} else qux();

Примеры правильного кода для параметра по умолчанию "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) {    foo++;}

if (foo) bar();
else {    foo++;}

while (true) {doSomething();}

for (let i=0; i < items.length; i++) {doSomething();}

Примеры правильного кода для параметра "multi":

Открыть в песочнице
/*eslint curly: ["error", "multi"]*/

if (foo) foo++;

else foo();

while (true) {
    doSomething();
    doSomethingElse();
}

multi-line

В качестве альтернативы можно смягчить правило и разрешить однострочные конструкции if, else if, else, for, while или do без фигурных скобок, продолжая требовать фигурные скобки во всех остальных случаях.

Примеры неправильного кода для параметра "multi-line":

Открыть в песочнице
/*eslint curly: ["error", "multi-line"]*/

if (foo)
  doSomething();
else
  doSomethingElse();

if (foo) foo(  bar,  baz);

Примеры правильного кода для параметра "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)
    foo ={bar: baz,qux: foo};

while (true)
  if(foo)doSomething();elsedoSomethingElse();

if (foo) {    foo++;}

while (true) {doSomething();}

for (let i = 0; foo; i++) {doSomething();}

Примеры правильного кода для параметра "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 (let i = 0; foo; i++)
    doSomething();

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

Примеры дополнительного правильного кода для параметра "multi-or-nest":

Открыть в песочнице
/*eslint curly: ["error", "multi-or-nest"]*/

if (foo)
    // some comment
    bar();

if (foo) {
    // some comment
    bar();
}

consistent

При использовании любого из параметров multi* можно добавить параметр, требующий, чтобы тела конструкций if, else if и else использовали фигурные скобки либо все вместе, либо не использовали их вовсе.

Примеры неправильного кода для параметров "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++;}

Примеры правильного кода для параметров "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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API