Spec-Zone.ru › ESLint

no-lone-blocks

Запрет на ненужные вложенные блоки

В JavaScript до ES6 отдельные блоки кода, ограниченные фигурными скобками, не создают новую область видимости и не имеют практического применения. Например, эти фигурные скобки ничего не меняют в foo:

{
    var foo = bar();
}

В ES6 блоки кода могут создавать новую область видимости, если присутствует объявление уровня блока (let и const), объявление класса или функции (в строгом режиме). В этих случаях блок не считается избыточным.

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

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

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

Открыть в Playground
/*eslint no-lone-blocks: "error"*/

{}

if (foo) {
    bar();
    {baz();}
}

function bar() {
    {baz();}
}

{functionfoo(){}}

{aLabel:{}}

class C {
    static {
        {foo();}
    }
}

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

Открыть в Playground
/*eslint no-lone-blocks: "error"*/

while (foo) {
    bar();
}

if (foo) {
    if (bar) {
        baz();
    }
}

function bar() {
    baz();
}

{
    let x = 1;
}

{
    const y = 1;
}

{
    class Foo {}
}

aLabel: {
}

class C {
    static {
        lbl: {
            if (something) {
                break lbl;
            }

            foo();
        }
    }
}

Примеры правильного кода для этого правила в среде ES6 и строгом режиме с помощью "parserOptions": { "sourceType": "module" } в конфигурации ESLint или "use strict" директивы в коде:

Открыть в Playground
/*eslint no-lone-blocks: "error"*/

"use strict";

{
    function foo() {}
}

Версия

Это правило было добавлено в ESLint v0.4.0.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-lone-blocks

Spec-Zone.ru

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