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 повторные объявления. Таким образом, если вы используете устаревленный var ключевой слова в своем коде TypeScript, это правило все еще будет полезным.
Связанные правила
Версия
Это правило было добавлено в ESLint v0.0.9.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-redeclare