MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/a3e7b5301fea

TypeError: invalid 'in' operand "x"

メッセージ

TypeError: invalid 'in' operand "x" (Firefox)
TypeError: Cannot use 'in' operator to search for 'x' in y (Chrome)

エラータイプ

TypeError

何がうまくいかなかったのか?

in 演算子 はプロパティがオブジェクトに所属しているの確認にのみ使用できます。文字列や数値、そのほかのプリミティブ型を検索することはできません。

文字列を検索

そのほかのプログラミング言語 (たとえば、Python) と異なり、in 演算子を使用して文字列を検索できません。

"Hello" in "Hello World"; 
// TypeError: invalid 'in' operand "Hello World"

たとえば、代わりに String.prototype.indexOf() を使用します。

"Hello World".indexOf("Hello") !== -1; 
// true

演算子は nullundefined ではいけない

検査するオブジェクトが実際は nullundefined ではないことを確認してください。

var foo = null;
"bar" in foo;
// TypeError: invalid 'in' operand "foo"

in 演算子は常にオブジェクトを想定しています。

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

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

配列の検索

Array オブジェクトを検索するために in 演算子を使用する際は注意してください。in 演算子はインデックス番号を確認しますが、インデックスの値は確認しません。

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

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama
 最終更新者: YuichiNukiyama,