Spec-Zone.ru › ESLint

no-undef

Запрещает использование необъявленных переменных, если они не упомянуты в комментариях /*global */

✅ Рекомендуется

Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило

Это правило поможет обнаружить потенциальные ошибки ReferenceError, вызванные опечатками в именах переменных и параметров или случайным созданием неявных глобальных переменных (например, если забыть ключевое слово var в инициализаторе цикла for).

Подробности правила

Любая ссылка на необъявленную переменную вызывает предупреждение, если только переменная явно не упомянута в комментарии /*global ...*/ или не указана с помощью ключа globals в файле конфигурации. Обычно это используется, если вы намеренно применяете глобальные переменные, определённые в другом месте (например, в скрипте, подключённом из HTML).

Примеры неправильного кода для этого правила:

Открыть в Playground
/*eslint no-undef: "error"*/

const foo = someFunction();
const bar = a + 1;

Примеры правильного кода для этого правила с объявлением global:

Открыть в Playground
/*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 } по умолчанию:

Открыть в Playground
/*eslint no-undef: "error"*/

if (typeof UndefinedIdentifier === "undefined") {
    // do something ...
}

Этот параметр можно использовать, если вы хотите запретить проверку typeof для необъявленной переменной.

Примеры неправильного кода для параметра { "typeof": true }:

Открыть в Playground
/*eslint no-undef: ["error", { "typeof": true }] */

if(typeof a === "string"){}

Примеры правильного кода для параметра { "typeof": true } с объявлением global:

Открыть в Playground
/*global a*/
/*eslint no-undef: ["error", { "typeof": true }] */

if(typeof a === "string"){}

Когда не следует использовать это правило

Если явное объявление глобальных переменных вам не подходит.

Совместимость

Это правило обеспечивает совместимость с обработкой глобальных переменных в JSHint и JSLint.

Обрабатывается TypeScript

При использовании TypeScript это правило можно безопасно отключить, поскольку компилятор TypeScript выполняет эту проверку.

Связанные правила

  • no-global-assign
  • no-redeclare

Версия

Это правило появилось в ESLint v0.0.9.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-undef

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API