no-undef
Запрещает использование необъявленных переменных, если они не упомянуты в комментариях /*global */
Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило
Это правило поможет обнаружить потенциальные ошибки ReferenceError, вызванные опечатками в именах переменных и параметров или случайным созданием неявных глобальных переменных (например, если забыть ключевое слово var в инициализаторе цикла for).
Подробности правила
Любая ссылка на необъявленную переменную вызывает предупреждение, если только переменная явно не упомянута в комментарии /*global ...*/ или не указана с помощью ключа globals в файле конфигурации. Обычно это используется, если вы намеренно применяете глобальные переменные, определённые в другом месте (например, в скрипте, подключённом из HTML).
Примеры неправильного кода для этого правила:
/*eslint no-undef: "error"*/
const foo = ();
const bar = + 1;
Примеры правильного кода для этого правила с объявлением global:
/*global someFunction, a*/
/*eslint no-undef: "error"*/
const foo = someFunction();
const bar = a + 1;
Обратите внимание: это правило не запрещает присваивание значений глобальным переменным, доступным только для чтения. Если вы также хотите запретить такие присваивания, см. правило no-global-assign.
Это правило также не запрещает повторные объявления глобальных переменных. Если вы также хотите запретить такие повторные объявления, см. правило no-redeclare.
Параметры
-
typeof, установленный в true, будет выводить предупреждения о переменных, используемых в проверке typeof (по умолчанию false).
typeof
Примеры правильного кода с параметром { "typeof": false } по умолчанию:
/*eslint no-undef: "error"*/
if (typeof UndefinedIdentifier === "undefined") {
// do something ...
}
Этот параметр можно использовать, если вы хотите запретить проверку typeof для необъявленной переменной.
Примеры неправильного кода для параметра { "typeof": true }:
/*eslint no-undef: ["error", { "typeof": true }] */
if(typeof === "string"){}
Примеры правильного кода для параметра { "typeof": true } с объявлением global:
/*global a*/
/*eslint no-undef: ["error", { "typeof": true }] */
if(typeof a === "string"){}
Когда не следует использовать это правило
Если явное объявление глобальных переменных вам не подходит.
Совместимость
Это правило обеспечивает совместимость с обработкой глобальных переменных в JSHint и JSLint.
Обрабатывается TypeScript
При использовании TypeScript это правило можно безопасно отключить, поскольку компилятор TypeScript выполняет эту проверку.
Связанные правила
Версия
Это правило появилось в ESLint v0.0.9.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-undef