Инициализация объявлений переменных
Требовать или запрещать инициализацию в объявлениях переменных
В JavaScript переменные могут быть присвоены во время объявления или в любой момент после этого с помощью оператора присваивания. Например, в следующем коде foo инициализируется во время объявления, а bar — позже.
var foo = 1;
var bar;
if (foo) {
bar = 1;
} else {
bar = 2;
}
Подробное описание правила
Это правило предназначено для принудительного применения или исключения инициализации переменных во время объявления. Например, в следующем коде foo инициализируется во время объявления, а bar — нет.
var foo = 1;
var bar;
bar = 2;
Это правило направлено на обеспечение согласованности в инициализации и объявлениях переменных.
Параметры
Правило принимает два параметра:
- Строка, которая должна быть либо
"always"(по умолчанию), чтобы принудительно инициализировать переменную при объявлении, или"never"для запрета инициализации во время объявления. Это правило применяется кvar,let, иconstпеременным, однако"never"игнорируется дляconstпеременных, так как неинициализированныеconsts генерируют ошибку разбора. - Объект, который дополнительно контролирует поведение этого правила. В настоящее время единственный доступный параметр —
ignoreForLoopInit, который указывает, разрешена ли инициализация при объявлении в циклахforпри установке"never", поскольку это очень типичный случай использования.
Вы можете настроить правило следующим образом:
Переменные должны быть инициализированы при объявлении (по умолчанию)
{
"init-declarations": ["error", "always"],
}
Переменные не должны инициализироваться при объявлении
{
"init-declarations": ["error", "never"]
}
Переменные не должны инициализироваться при объявлении, за исключением циклов for, где это разрешено
{
"init-declarations": ["error", "never", { "ignoreForLoopInit": true }]
}
always
Примеры неправильного кода для параметра "always" по умолчанию:
/*eslint init-declarations: ["error", "always"]*/
function foo() {
var ;
let ;
}
Примеры правильного кода для параметра "always" по умолчанию:
/*eslint init-declarations: ["error", "always"]*/
function foo() {
var bar = 1;
let baz = 2;
const qux = 3;
}
never
Примеры неправильного кода для параметра "never":
/*eslint init-declarations: ["error", "never"]*/
function foo() {
var ;
let ;
for (var ; i < 1; i++) {}
}
Примеры правильного кода для параметра "never":
/*eslint init-declarations: ["error", "never"]*/
function foo() {
var bar;
let baz;
const buzz = 1;
}
Параметр "never" игнорирует инициализации переменных const.
ignoreForLoopInit
Примеры правильного кода для параметра "never", { "ignoreForLoopInit": true }:
/*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