no-undefined
Запретить использование undefined в качестве идентификатора
Переменная undefined в JavaScript на самом деле является свойством глобального объекта. Таким образом, в ECMAScript 3 было возможно перезаписать значение undefined. В то время как ECMAScript 5 запрещает перезапись undefined, всё ещё возможно затенение undefined, например:
function doSomething(data) {
var undefined = "hi";
// doesn't do what you think it does
if (data === undefined) {
// ...
}
}
Поскольку undefined может быть перезаписано или затенено, чтение undefined может дать неожиданное значение. (Это не относится к null, которое является ключевым словом, всегда дающим одно и то же значение.) Чтобы избежать этого, можно избегать всех использований undefined, что рекомендуют некоторые руководства по стилю, и что навязывает эта правила. Эти же руководства рекомендуют:
- Переменные, которые должны быть
undefined, просто не инициализируются. (Все неинициализированные переменные автоматически получают значениеundefinedв JavaScript.) - Проверку, является ли значение
undefined, следует выполнять с помощьюtypeof. - Использование оператора
voidдля генерации значенияundefinedпри необходимости.
В качестве альтернативы можно использовать правила no-global-assign и no-shadow-restricted-names, чтобы предотвратить затенение undefined или присвоение ему другого значения. Это гарантирует, что undefined всегда будет содержать своё первоначальное, ожидаемое значение.
Подробное описание правила
Это правило направлено на устранение использования undefined, и, следовательно, генерирует предупреждение всякий раз, когда оно используется.
Примеры неправильного кода для этого правила:
/*eslint no-undefined: "error"*/
var foo = ;
var = "foo";
if (foo === ) {
// ...
}
function baz() {
// ...
}
bar(, "lorem");
Примеры правильного кода для этого правила:
/*eslint no-undefined: "error"*/
var foo = void 0;
var 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