TypeError: 无法使用 'in' 运算符在 'y' 中搜索 'x'
当in
运算符用于在字符串、数字或其他基本类型中搜索时,会发生JavaScript异常“'in'的右侧应为对象”。它只能用于检查属性是否在对象中。
消息
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
运算符只能用于检查属性是否在对象中。您不能在字符串、数字或其他基本类型中搜索。
示例
在字符串中搜索
与其他编程语言(例如Python)不同,您不能使用in
运算符在字符串中搜索。
js
"Hello" in "Hello World";
// TypeError: cannot use 'in' operator to search for 'Hello' in 'Hello World'
相反,您需要使用String.prototype.includes()
,例如。
js
"Hello World".includes("Hello");
// true
操作数不能为null或undefined
确保您正在检查的对象实际上不是null
或undefined
。
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)
in
运算符始终期望一个对象。
js
const foo = { baz: "bar" };
"bar" in foo; // false
"PI" in Math; // true
"pi" in Math; // false
在数组中搜索
在使用in
运算符在Array
对象中搜索时要小心。in
运算符检查索引号,而不是该索引处的值。
js
const trees = ["redwood", "bay", "cedar", "oak", "maple"];
3 in trees; // true
"oak" in trees; // false