Сообщения
TypeError: недопустимый операнд в "in" (edge) TypeError: правая часть 'in' должна быть объектом, есть 'x' (Firefox) TypeError: невозможно использовать оператор 'in' для поиска 'x' в 'y' (Firefox, Chrome)
Тип ошибки
Что пошло не так?
Оператор in можно использовать только для проверки наличия свойства в объекте. Вы не можете искать в строках, числах или других примитивных типах.
Примеры
Поиск в строках
В отличие от других языков программирования (например, Python), поиск в строках с помощью оператора in невозможен.
"Hello" in "Hello World"; // TypeError: cannot use 'in' operator to search for 'Hello' in 'Hello World'
Вместо этого вам нужно будет использоватьString.prototype.indexOf()или примеры
"Hello World".indexOf("Hello") !== -1;
// true
Операнд не может бытьnull или undefined
Убедитесь, что объект, который вы осматриваете, на самом деле не null или undefined.
var foo = null; "bar" in foo; // TypeError: не удается использовать оператор 'in' для поиска 'bar' в 'foo' (Chrome) // TypeError: правая часть 'in' должна быть объектом, полученным null (Firefox)
Оператор in всегда ожидает объект.
var foo = { baz: "bar" };
"bar" in foo; // false
"PI" in Math; // true
"pi" in Math; // false
Поиск в Массивах
Будьте осторожны при использовании оператора для поиска Array объекты. the in оператор проверяет номер индекса, а не его значение.
var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple']; 3 in trees; // true "oak" in trees; // false