JavaScriptでのオブジェクト比較は参照の比較のみらしい

var num1 = 10;             
var num2 = 10;             
var num3 = new Number(10); 
var num4 = num3;           
var num5 = new Number(10); 

//Chromeで実行してみた
num1 === num2              // true
num1 === num3              // false
num1 == num3               // true ← (2)
num3 === num4              // true
num3 == num4               // true
num3 === num5              // false
num3 == num5               // false ← (1)

(1)の結果を見るに、オブジェクト同士の比較は、==,===のどちらを使っても参照を比較するらしいです。(2)は実質

num1 === num3.valueOf()

なので、(1)も

num3.valueOf() === num5.valueOf()

のように動作するのかと思ったら、そうじゃありませんでした。

コメントを残す