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()
のように動作するのかと思ったら、そうじゃありませんでした。