概要
javascriptのプログラムではあまり見かけない演算子ですが、in演算子についてまとめます。
in演算子は左側の値が右側のオブジェクトのプロパティであればtrueを返します。
演算子の使用上のルール
この演算子を使うには、下記のようなルールがあります。
・左側のオペランドは文字列
・右側のオペランドはオブジェクト
実例1
試しに、次のような例を書いてみます。
//オブジェクト var testobject = { aaa: "test1", bbb: "test2", ccc: true }; console.log("aaa" in testobject); console.log("bbb" in testobject); console.log("ddd" in testobject);
この場合の結果は、
true true false
になります。
オブジェクト「testobject 」に対し、aaaとbbbはプロパティとして存在しますが、dddは存在しない為、falseになります。
実例2
では、オブジェクト中身を変えて、次のような例を試してみます。
//オブジェクト var testobject2 = [ 10, 20, 30 ]; console.log("aaa" in testobject2); console.log(10 in testobject2); console.log("10" in testobject2); console.log("11" in testobject2);
この場合の結果は、
false false false false
になりました。
一見すると2つ目の演算結果はtrueになりそうですが、正確には「プロパティが存在するかどうか」が判定基準になるので、全てfalseになりました。
実例3
では、次のような場合はどうなるか、試してみます。
var testobject3 = [10, 11, 12]; console.log("0" in testobject3); console.log(1 in testobject3); console.log(3 in testobject3);
この場合の結果は、
true true false
になります。
オブジェクトtestobject3は要素の内容だけが書かれていますが、プロパティは明示的に書いていないものの、配列のN番目という判定がされています。
また、2番目の「1」のin演算子については、判定時に文字列の「”1″」として変換されて演算がされるので注意が必要です。