no-undef
Запрещает использование не объявленных переменных, если они не упомянуты в /*global */ комментариях
Использование recommended конфигурации из @eslint/js в файле конфигурации включает эту проверку.
Эта проверка помогает обнаружить потенциальные ошибки ReferenceError, вызванные неверным написанием имён переменных и параметров или случайными глобальными переменными (например, из-за забытия var ключевого слова в инициализаторе цикла for).
Подробное описание правила
Любая ссылка на не объявленную переменную вызывает предупреждение, если переменная явно не указана в /*global ...*/ комментарии или не указана в globals ключе конфигурационного файла. Это часто используется, если вы намеренно используете глобальные переменные, которые определены в другом месте (например, в скрипте, подгружаемом из HTML).
Примеры неправильного кода для этой проверки:
/*eslint no-undef: "error"*/
var foo = ();
var bar = + 1;
Примеры правильного кода для этой проверки с global объявлением:
/*global someFunction, a*/
/*eslint no-undef: "error"*/
var foo = someFunction();
var 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