Spec-Zone.ru › ESLint

Пробелы перед блоками

Обеспечивает согласованное расстояние перед блоками

🔧 Исправимо

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

Это правило было устаревшим в ESLint v8.53.0. Пожалуйста, используйте соответствующее правило в @stylistic/eslint-plugin-js.

Согласованность — важная часть любого руководства по стилю. Хотя расположение открывающей фигурной скобки блоков — вопрос личных предпочтений, оно должно быть согласованным во всем проекте. Несогласованный стиль отвлекает читателя от важных частей кода.

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

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

  • Это правило игнорирует пробелы между => и блоком. Пробелы обрабатываются правилом arrow-spacing.
  • Это правило игнорирует пробелы между ключевым словом и блоком. Пробелы обрабатываются правилом keyword-spacing.
  • Это правило игнорирует пробелы между : случая switch и блоком. Пробелы обрабатываются правилом switch-colon-spacing.

Параметры

Это правило принимает один аргумент. Если это "always" , то блоки должны всегда иметь по крайней мере один предшествующий пробел. Если "never" , то у всех блоков не должно быть никаких предшествующих пробелов. Если желаются разные пробелы для блоков функций, блоков ключевых слов и классов, в качестве аргумента правила можно передать необъект конфигурации для отдельной настройки случаев. Если любое значение в объекте конфигурации "off", то ни один стиль не будет навязываться для блоков данного типа.

( например, { "functions": "never", "keywords": "always", "classes": "always" } )

По умолчанию "always".

“always”

Примеры некорректного кода для этого правила с параметром «always»:

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

if (a){b();}

function a(){}

for (;;){b();}

try {} catch(a){}

class Foo{constructor(){}}

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

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

if (a) {
    b();
}

if (a) {
    b();
} else{ /*no error. this is checked by `keyword-spacing` rule.*/
    c();
}

class C {
    static{} /*no error. this is checked by `keyword-spacing` rule.*/
}

function a() {}

for (;;) {
    b();
}

try {} catch(a) {}

“never”

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

Открыть в Playground
/*eslint space-before-blocks: ["error", "never"]*/

if (a) {b();}

function a() {}

for (;;) {b();}

try {} catch(a) {}

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

Открыть в Playground
/*eslint space-before-blocks: ["error", "never"]*/

if (a){
    b();
}

function a(){}

for (;;){
    b();
}

try{} catch(a){}

class Foo{
  constructor(){}
}

Примеры некорректного кода для этого правила при конфигурации { "functions": "never", "keywords": "always", "classes": "never" }:

Открыть в Playground
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/

function a() {}

try {} catch(a){}

class Foo{
  constructor() {}
}

Примеры корректного кода для этого правила при конфигурации { "functions": "never", "keywords": "always", "classes": "never" }:

Открыть в Playground
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/

for (;;) {
  // ...
}

describe(function(){
  // ...
});

class Foo{
  constructor(){}
}

Примеры некорректного кода для этого правила при конфигурации { "functions": "always", "keywords": "never", "classes": "never" }:

Открыть в Playground
/*eslint space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/

function a(){}

try {} catch(a) {}

class Foo {constructor(){}}

Примеры корректного кода для этого правила при конфигурации { "functions": "always", "keywords": "never", "classes": "never" }:

Открыть в Playground
/*eslint space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/

if (a){
  b();
}

var a = function() {}

class Foo{
  constructor() {}
}

Примеры некорректного кода для этого правила при конфигурации { "functions": "never", "keywords": "never", "classes": "always" }:

Открыть в Playground
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/

class Foo{constructor(){}}

Примеры корректного кода для этого правила при конфигурации { "functions": "never", "keywords": "never", "classes": "always" }:

Открыть в Playground
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/

class Foo {
  constructor(){}
}

Когда не следует его использовать

Вы можете отключить это правило, если вас не интересует согласованность пробелов перед блоками.

Связанные правила

  • keyword-spacing
  • arrow-spacing
  • switch-colon-spacing
  • block-spacing
  • brace-style

Версия

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

Ресурсы

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

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

Spec-Zone.ru

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