TypeError: нельзя использовать оператор 'in' для поиска 'x' в 'y'
JavaScript-исключение "правая часть 'in' должна быть объектом" возникает, когда in operator использовался для поиска в строках, числах или других примитивных типах. Он может использоваться только для проверки наличия свойства в объекте.
Сообщение
TypeError: Cannot use 'in' operator to search for 'x' in 'y' (V8-based & Firefox) TypeError: right-hand side of 'in' should be an object, got null (Firefox) TypeError: "y" is not an Object. (evaluating '"x" in "y"') (Safari)
Тип ошибки
Что пошло не так?
in operator может использоваться только для проверки наличия свойства в объекте. Вы не можете искать в строках, числах или других примитивных типах.
Примеры
Поиск в строках
В отличие от других языков программирования (например, Python), вы не можете искать в строках с помощью in operator.
"Hello" in "Hello World"; // TypeError: cannot use 'in' operator to search for 'Hello' in 'Hello World'
Вместо этого вам нужно будет использовать String.prototype.includes(), например.
"Hello World".includes("Hello");
// true
Операнд не может быть null или undefined
Убедитесь, что объект, который вы инспектируете, на самом деле не является null или undefined.
const foo = null; "bar" in foo; // TypeError: cannot use 'in' operator to search for 'bar' in 'foo' (Chrome) // TypeError: right-hand side of 'in' should be an object, got null (Firefox)
in operator всегда ожидает объект.
const foo = { baz: "bar" };
"bar" in foo; // false
"PI" in Math; // true
"pi" in Math; // false
Поиск в массивах
Будьте осторожны при использовании in operator для поиска в Array объектах. in operator проверяет номер индекса, а не значение по этому индексу.
const trees = ["redwood", "bay", "cedar", "oak", "maple"]; 3 in trees; // true "oak" in trees; // false
См. также
© 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/in_operator_no_object