TypeError: kann den 'in'-Operator nicht verwenden, um nach 'x' in 'y' zu suchen
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 Typen zu suchen. Er kann nur
verwendet werden, um zu prüfen, ob eine Eigenschaft in einem Objekt vorhanden ist.
Meldung
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 prüfen, ob eine Eigenschaft in einem Objekt vorhanden ist.
Man kann nicht in Zeichenfolgen, Zahlen oder anderen primitiven Typen suchen.
Beispiele
Suche in Zeichenfolgen
Im Gegensatz zu anderen Programmiersprachen (z.B. Python) können Sie nicht in Zeichenfolgen mit dem
in
-Operator suchen.
"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.
"Hello World".includes("Hello");
// true
Der Operant darf nicht null oder undefined sein
Stellen Sie sicher, dass das Objekt, das Sie überprüfen, nicht tatsächlich null
oder
undefined
ist.
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.
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.
const trees = ["redwood", "bay", "cedar", "oak", "maple"];
3 in trees; // true
"oak" in trees; // false