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 を返す (配列は反復可能。ES6 以上で動作する) // 定義済みオブジェクト "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 |
---|---|---|---|---|---|---|
基本サポート | (有) | (有) | (有) | (有) | (有) | (有) |