TypeError: cannot use 'in' operator to search for 'x' in 'y'

Die JavaScript-Ausnahme "right-hand side of 'in' should be an object" tritt auf, wenn der in-Operator verwendet wurde, um in Zeichenfolgen, Zahlen oder anderen primitiven Datentypen zu suchen. Er kann nur verwendet werden, um zu überprüfen, ob eine Eigenschaft in einem Objekt vorhanden ist.

Nachricht

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)

Fehlertyp

Was ist schiefgelaufen?

Der in-Operator kann nur verwendet werden, um zu überprüfen, ob eine Eigenschaft in einem Objekt vorhanden ist. Sie können nicht in Zeichenfolgen, Zahlen oder anderen primitiven Datentypen suchen.

Beispiele

Suche in Zeichenfolgen

Anders als in anderen Programmiersprachen (z.B. Python) können Sie mit dem in-Operator nicht in Zeichenfolgen suchen.

js
"Hello" in "Hello World";
// TypeError: cannot use 'in' operator to search for 'Hello' in 'Hello World'

Stattdessen müssen Sie String.prototype.includes() verwenden, zum Beispiel.

js
"Hello World".includes("Hello");
// true

Der Operand darf nicht null oder undefined sein

Stellen Sie sicher, dass das Objekt, das Sie überprüfen, nicht tatsächlich null oder undefined ist.

js
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)

Der in-Operator erwartet immer ein Objekt.

js
const foo = { baz: "bar" };
"bar" in foo; // false

"PI" in Math; // true
"pi" in Math; // false

Suche in Arrays

Seien Sie vorsichtig, wenn Sie den in-Operator verwenden, um in Array Objekten zu suchen. Der in-Operator überprüft die Indexnummer, nicht den Wert an diesem Index.

js
const trees = ["redwood", "bay", "cedar", "oak", "maple"];
3 in trees; // true
"oak" in trees; // false

Siehe auch