in 演算子は、指定されたプロパティが指定されたオブジェクトにある場合に true を返します。

構文

prop in objectName 

引数

prop
プロパティ名または配列のインデックスを表す文字列式またはシンボルです(シンボルではない場合は、文字列に強制変換されます)。
objectName
オブジェクトの名前です。

説明

次の例で in 演算子の使用法を示します。

// Arrays
var trees = ["redwood", "bay", "cedar", "oak", "maple"];
0 in trees        // true を返す
3 in trees        // true を返す
6 in trees        // false を返す
"bay" in trees    // false を返す (インデックスの指す値ではなく、
                  // インデックスの数字を指定しなければならない)
"length" in trees // true を返す (length は Array のプロパティ)
Symbol.iterator in trees // true を返す (配列は反復可能。ES2015 以上で動作する)

// 定義済みオブジェクト
"PI" in Math          // true を返す

// ユーザ定義オブジェクト
var mycar = {make: "Honda", model: "Accord", year: 1998};
"make" in mycar  // true を返す
"model" in mycar // true を返す

in 演算子の右側には、オブジェクトを指定しなければなりません。例えば、String コンストラクタで作成した文字列は指定できますが、文字列リテラルは指定できません。

var color1 = new String("green");

"length" in color1 // true を返す

var color2 = "coral";

"length" in color2 // エラーが発生 (color2 は String オブジェクトではありません)

削除済みあるいは未定義状態のプロパティへの in の使用

delete 演算子で削除されたプロパティについて、in 演算子は false を返します。

var mycar = {make: "Honda", model: "Accord", year: 1998};
delete mycar.make;
"make" in mycar;  // false を返す

var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
delete trees[3];
3 in trees; // false を返す

undefined を設定しているが削除されていないプロパティについて、in 演算子は true を返します。

var mycar = {make: "Honda", model: "Accord", year: 1998};
mycar.make = undefined;
"make" in mycar;  // true を返す
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
trees[3] = undefined;
3 in trees; // true を返す

継承されたプロパティ

プロトタイプチェインのプロパティについて、in 演算子は true を返します。

"toString" in {}; // true を返す

仕様

仕様 ステータス コメント
ECMAScript 2017 Draft (ECMA-262)
Relational Operators の定義
ドラフト  
ECMAScript 2015 (6th Edition, ECMA-262)
Relational Operators の定義
標準  
ECMAScript 5.1 (ECMA-262)
The in Operator の定義
標準  
ECMAScript 3rd Edition (ECMA-262)
The in Operator の定義
標準 初期定義。JavaScript 1.4 で実装。

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Edge Internet Explorer Opera Safari
基本サポート (有) (有) (有) (有) (有) (有)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)

関連項目

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

 このページの貢献者: kdex, YuichiNukiyama, teoli, ethertank, yyss
 最終更新者: kdex,