no-redeclare
Запрещает повторное объявление переменных
Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило
В JavaScript можно повторно объявить переменную с тем же именем с помощью var. Это может привести к путанице относительно того, где именно объявлена и инициализирована переменная.
Описание правила
Это правило предназначено для выявления переменных, которые объявлены несколько раз в одной области видимости.
Примеры неправильного кода для этого правила:
/*eslint no-redeclare: "error"*/
var a = 3;
var = 10;
class C {
foo() {
var b = 3;
var = 10;
}
static {
var c = 3;
var = 10;
}
}
Примеры правильного кода для этого правила:
/*eslint no-redeclare: "error"*/
var a = 3;
a = 10;
class C {
foo() {
var b = 3;
b = 10;
}
static {
var c = 3;
c = 10;
}
}
Параметры
Это правило принимает один необязательный аргумент — объект с логическим свойством "builtinGlobals". По умолчанию оно имеет значение true. Если задать значение true, правило также будет проверять повторные объявления встроенных глобальных переменных, таких как Object, Array, Number…
builtinGlobals
Параметр "builtinGlobals" проверяет повторные объявления встроенных глобальных переменных в глобальной области видимости.
Примеры неправильного кода для параметра { "builtinGlobals": true }:
/*eslint no-redeclare: ["error", { "builtinGlobals": true }]*/
var = 0;
Обратите внимание: при использовании sourceType: "commonjs" (или ecmaFeatures.globalReturn, если используется парсер по умолчанию) верхняя область видимости программы на самом деле является не глобальной областью видимости, а областью видимости «модуля». В этом случае объявление переменной с именем встроенной глобальной переменной не является повторным объявлением, а лишь затеняет глобальную переменную. В таком случае следует использовать правило no-shadow с параметром "builtinGlobals".
Обрабатывается TypeScript
Это правило можно безопасно отключить при использовании TypeScript, поскольку компилятор TypeScript выполняет эту проверку.
Обратите внимание: TypeScript обнаруживает повторные объявления let и const, но не обнаруживает повторные объявления var. Поэтому, если в вашей кодовой базе TypeScript используется устаревшее ключевое слово var, это правило всё ещё может быть полезным.
Связанные правила
Версия
Это правило добавлено в ESLint v0.0.9.
Материалы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-redeclare