no-undefined
Запрещает использовать undefined в качестве идентификатора
Это правило в настоящее время заморожено, и запросы на новые функции не принимаются.
Переменная undefined в JavaScript на самом деле является свойством глобального объекта. Поэтому в ECMAScript 3 можно было перезаписать значение undefined. Хотя ECMAScript 5 запрещает перезаписывать undefined, по-прежнему можно затенить undefined, например:
function doSomething(data) {
const undefined = "hi";
// doesn't do what you think it does
if (data === undefined) {
// ...
}
}
Поскольку undefined можно перезаписать или затенить, чтение undefined может вернуть неожиданное значение. (Это не относится к null — ключевому слову, которое всегда возвращает одно и то же значение.) Чтобы избежать этого, можно полностью отказаться от использования undefined, как рекомендуют некоторые руководства по стилю и требует это правило. В таких руководствах также рекомендуется:
- Переменные, которым следует иметь значение
undefined, просто оставляют неинициализированными. (В JavaScript все неинициализированные переменные автоматически получают значениеundefined.) - Проверять, имеет ли значение значение
undefined, следует с помощьюtypeof. - При необходимости использовать оператор
voidдля создания значенияundefined.
В качестве альтернативы можно использовать правила no-global-assign и no-shadow-restricted-names, чтобы запретить затенение undefined или присваивание ему другого значения. Это гарантирует, что undefined всегда будет сохранять исходное ожидаемое значение.
Описание правила
Это правило призвано исключить использование undefined и поэтому выдает предупреждение при каждом таком использовании.
Примеры неправильного кода для этого правила:
/*eslint no-undefined: "error"*/
const foo = ;
const = "foo";
if (foo === ) {
// ...
}
function baz() {
// ...
}
bar(, "lorem");
Примеры правильного кода для этого правила:
/*eslint no-undefined: "error"*/
const foo = void 0;
const Undefined = "foo";
if (typeof foo === "undefined") {
// ...
}
global.undefined = "foo";
bar(void 0, "lorem");
Параметры
У этого правила нет параметров.
Когда не следует использовать это правило
Если вы хотите разрешить использование undefined в коде, это правило можно отключить.
Связанные правила
Версия
Это правило появилось в ESLint v0.7.1.
Дополнительная литература
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-undefined