TypeError: "x" является (не) "y"
Исключение JavaScript "x является (не) y" возникает при неожиданном типе. Часто это неожиданные undefined или null значения.
Сообщение
TypeError: Cannot read properties of undefined (reading 'x') (V8-based) TypeError: "x" is undefined (Firefox) TypeError: "undefined" is not an object (Firefox) TypeError: undefined is not an object (evaluating 'obj.x') (Safari) TypeError: "x" is not a symbol (V8-based & Firefox) TypeError: Symbol.keyFor requires that the first argument be a symbol (Safari)
Тип ошибки
Что пошло не так?
Произошел неожиданный тип. Это часто случается с undefined или null значениями.
Кроме того, некоторые методы, такие как Object.create() или Symbol.keyFor(), требуют определенный тип, который должен быть предоставлен.
Примеры
Недопустимые случаи
Вы не можете вызывать метод у undefined или null переменной.
const foo = undefined; foo.substring(1); // TypeError: foo is undefined const foo2 = null; foo2.substring(1); // TypeError: foo2 is null
Некоторые методы могут требовать определенный тип.
const foo = {};
Symbol.keyFor(foo); // TypeError: foo is not a symbol
const foo2 = "bar";
Object.create(foo2); // TypeError: "foo2" is not an object or null
Исправление проблемы
Чтобы исправить значения null pointer на undefined или null, вы можете сначала проверить, является ли значение undefined или null.
if (foo !== undefined && foo !== null) {
// Now we know that foo is defined, we are good to go.
}
Или, если вы уверены, что foo не будет другим falsy значением, таким как "" или 0, или если фильтрация этих случаев не является проблемой, вы можете просто проверить его истинность.
if (foo) {
// Now we know that foo is truthy, it will necessarily not be null/undefined.
}
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Unexpected_type