JavaScript, == と === の違い
今日知ったのでメモ。
var foo = 3; var bar = "3"; console.log("foo == bar: " + (foo == bar)); console.log("foo === bar: " + (foo === bar)); var str1 = "String1"; var str2 = new String('String1'); console.log("str1 == str2: " + (str1 == str2)); console.log("str1 === str2: " + (str1 === str2));
-- 結果 -- foo == bar: true foo === bar: false str1 == str2: true str1 === str2: false
== と === の違い
fooとbarでは、StringとNumberとデータ型が異なるのでfalseが返ってくる。
str1とstr2では、プリミティブ型とオブジェクト型に異なるので、これまたfalseが返ってくる。
barを3.0にしてもtrueが返ってくるのは、JavaScriptがintとかfloatみたいに整数と浮動小数点値をタイプ分けせず、Numberに統一しているからだと思う。