JavaScript: プリミティブ型とオブジェクト型の値を比較

JavaScript のデータ型には大きくわけてプリミティブ型とオブジェクト型の2つがあります。 例えば、'hello' という文字列を表す変数も、 プリミティブ型とオブジェクト型の2通りで表せます。

プリミティブ型(文字列型)で表す場合は

var str = 'hello';

オブジェクト型(String)で表す場合は

var obj = new String('hello');
ではこの2つの変数の値を「==」等値演算子、「===」同値演算子で比較してみた場合どうなるでしょうか?

var str = 'hello';
var obj = new String('hello');

console.log(str == obj);   // true

console.log(str === obj);  // false

「==」等値演算子の場合は、オブジェクト型(String)の値は文字列型に変換されて 比較します。ですからこの場合は「true」となります。

一方、「===」同値演算子の場合は、型も含めて比較されるため「false」となります。

このように、同じ文字列を表す場合でも、プリミティブ型とオブジェクト型では 演算子によって結果が異なることを知っておいてください。

JavaScript入門