Spec-Zone.ru › ESLint

no-undef-init

Запрет инициализации переменных значением undefined

🔧 Исправимо

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

В JavaScript переменная, объявленная, но не инициализированная, автоматически получает значение undefined. Например:

var foo;

console.log(foo === undefined);     // true

Поэтому нет необходимости инициализировать переменную значением undefined, например:

var foo = undefined;

Рекомендуется избегать инициализации переменных значением undefined.

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

Это правило призвано устранить объявления переменных var и let, которые инициализируются значением undefined.

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

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

var foo = undefined;
let bar = undefined;

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

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

var foo;
let bar;

Обратите внимание, что это правило не проверяет объявления const , шаблоны деструктуризации, параметры функций и поля классов.

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

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

const foo = undefined;

let { bar = undefined } = baz;

[quux = undefined] = quuux;

(foo = undefined) => {};

class Foo {
    bar = undefined;
}

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

Существует одна ситуация, когда инициализация значением undefined ведет себя иначе, чем пропуск инициализации, и это когда объявление var происходит внутри цикла. Например:

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

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

for (i = 0; i < 10; i++) {
    var x = undefined;
    console.log(x);
    x = i;
}

В этом случае, переменная var x выносится за пределы цикла, фактически создавая:

var x;

for (i = 0; i < 10; i++) {
    x = undefined;
    console.log(x);
    x = i;
}

Если вы удалите инициализацию, то поведение цикла изменится:

for (i = 0; i < 10; i++) {
    var x;
    console.log(x);
    x = i;
}

Этот код эквивалентен:

var x;

for (i = 0; i < 10; i++) {
    console.log(x);
    x = i;
}

Это приводит к другому результату, чем определение var x = undefined в цикле, так как x больше не сбрасывается до undefined при каждом проходе цикла.

Если вы используете такую инициализацию внутри цикла, отключите это правило.

Пример правильного кода для этого правила, так как оно отключено на определённой строке:

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

for (i = 0; i < 10; i++) {
    var x = undefined; // eslint-disable-line no-undef-init
    console.log(x);
    x = i;
}

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

  • no-undefined
  • no-void

Версия

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

Ресурсы

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

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

Spec-Zone.ru

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