Spec-Zone.ru › ESLint

Инициализация объявлений переменных

Требовать или запрещать инициализацию в объявлениях переменных

В JavaScript переменные могут быть присвоены во время объявления или в любой момент после этого с помощью оператора присваивания. Например, в следующем коде foo инициализируется во время объявления, а bar — позже.

var foo = 1;
var bar;

if (foo) {
    bar = 1;
} else {
    bar = 2;
}

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

Это правило предназначено для принудительного применения или исключения инициализации переменных во время объявления. Например, в следующем коде foo инициализируется во время объявления, а bar — нет.

var foo = 1;
var bar;

bar = 2;

Это правило направлено на обеспечение согласованности в инициализации и объявлениях переменных.

Параметры

Правило принимает два параметра:

  1. Строка, которая должна быть либо "always" (по умолчанию), чтобы принудительно инициализировать переменную при объявлении, или "never" для запрета инициализации во время объявления. Это правило применяется к var, let, и const переменным, однако "never" игнорируется для const переменных, так как неинициализированные consts генерируют ошибку разбора.
  2. Объект, который дополнительно контролирует поведение этого правила. В настоящее время единственный доступный параметр — ignoreForLoopInit, который указывает, разрешена ли инициализация при объявлении в циклах for при установке "never", поскольку это очень типичный случай использования.

Вы можете настроить правило следующим образом:

Переменные должны быть инициализированы при объявлении (по умолчанию)

{
    "init-declarations": ["error", "always"],
}

Переменные не должны инициализироваться при объявлении

{
    "init-declarations": ["error", "never"]
}

Переменные не должны инициализироваться при объявлении, за исключением циклов for, где это разрешено

{
    "init-declarations": ["error", "never", { "ignoreForLoopInit": true }]
}

always

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

Открыть в Playground
/*eslint init-declarations: ["error", "always"]*/

function foo() {
    var bar;
    let baz;
}

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

Открыть в Playground
/*eslint init-declarations: ["error", "always"]*/

function foo() {
    var bar = 1;
    let baz = 2;
    const qux = 3;
}

never

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

Открыть в Playground
/*eslint init-declarations: ["error", "never"]*/

function foo() {
    var bar = 1;
    let baz = 2;

    for (var i = 0; i < 1; i++) {}
}

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

Открыть в Playground
/*eslint init-declarations: ["error", "never"]*/

function foo() {
    var bar;
    let baz;
    const buzz = 1;
}

Параметр "never" игнорирует инициализации переменных const.

ignoreForLoopInit

Примеры правильного кода для параметра "never", { "ignoreForLoopInit": true }:

Открыть в Playground
/*eslint init-declarations: ["error", "never", { "ignoreForLoopInit": true }]*/
for (var i = 0; i < 1; i++) {}

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

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

Версия

Это правило было добавлено в ESLint v1.0.0-rc-1.

Ресурсы

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

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

Spec-Zone.ru

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