プログラミング日記

プログラミング、英語、アメリカ、Apple、自転車とか

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に統一しているからだと思う。

データ型 (JavaScript)