===の意味、"==" と "===" の違いを紹介します。
概要
JavaScriptで
===
の記述のあるコードをたまに見かける場合があります。この記事では、=== 演算子について紹介します。
意味
=== 演算子は変数の型も含めて同じ値である場合に true となります。
プログラム例
コード
下記のHTMLファイルを作成します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript">
function buttonClick() {
var value1 = "Penguin";
var value2 = "Penguin";
var elem1 = document.getElementById("output1");
if (value1 == value2) {
elem1.innerText = "true";
} else {
elem1.innerText = "false";
}
var elem2 = document.getElementById("output2");
if (value1 === value2) {
elem2.innerText = "true";
} else {
elem2.innerText = "false";
}
var value3 = Number(0.6);
var value4 = String(0.6);
var elem3 = document.getElementById("output3");
if (value3 == value4) {
elem3.innerText = "true";
} else {
elem3.innerText = "false";
}
var elem4 = document.getElementById("output4");
if (value3 === value4) {
elem4.innerText = "true";
} else {
elem4.innerText = "false";
}
var value5 = true;
var elem5 = document.getElementById("output5");
if (value5 == true) elem5.innerText = "true"; else elem5.innerText = "false";
var elem6 = document.getElementById("output6");
if (value5 === true) elem6.innerText = "true"; else elem6.innerText = "false";
var elem7 = document.getElementById("output7");
if (value5 == 1) elem7.innerText = "true"; else elem7.innerText = "false";
var elem8 = document.getElementById("output8");
if (value5 === 1) elem8.innerText = "true"; else elem8.innerText = "false";
var elem9 = document.getElementById("output9");
if (value5 == false) elem9.innerText = "true"; else elem9.innerText = "false";
var elem10 = document.getElementById("output10");
if (value5 === false) elem10.innerText = "true"; else elem10.innerText = "false";
var elem11 = document.getElementById("output11");
if (value5 == 0) elem11.innerText = "true"; else elem11.innerText = "false";
var elem12 = document.getElementById("output12");
if (value5 === 0) elem12.innerText = "true"; else elem12.innerText = "false";
var value6 = new String("ぺんぎんクッキー");
var value7 = new String("ぺんぎんクッキー");
var value8 = value6;
var elem13 = document.getElementById("output13");
if (value6 == value7) elem13.innerText = "true"; else elem13.innerText = "false";
var elem14 = document.getElementById("output14");
if (value6 === value7) elem14.innerText = "true"; else elem14.innerText = "false";
var elem15 = document.getElementById("output15");
if (value6.valueOf() === value7.valueOf()) elem15.innerText = "true"; else elem15.innerText = "false";
var elem16 = document.getElementById("output16");
if (value6.valueOf() === value7.valueOf()) elem16.innerText = "true"; else elem16.innerText = "false";
var elem17 = document.getElementById("output17");
if (value6 == value8) elem17.innerText = "true"; else elem17.innerText = "false";
var elem18 = document.getElementById("output18");
if (value6 === value8) elem18.innerText = "true"; else elem18.innerText = "false";
}
</script>
</head>
<body>
<h1>===演算子のデモ</h1>
<button onclick="buttonClick();">Exec</button>
<div>text1 == text2 : <span id="output1"></span></div>
<div>text1 === text2 : <span id="output2"></span></div>
<hr />
<div>text3 == text4 : <span id="output3"></span></div>
<div>text3 === text4 : <span id="output4"></span></div>
<hr />
<div>value5 == true : <span id="output5"></span></div>
<div>value5 === true: <span id="output6"></span></div>
<div>value5 == 1 : <span id="output7"></span></div>
<div>value5 === 1: <span id="output8"></span></div>
<div>value5 == false : <span id="output9"></span></div>
<div>value5 === false: <span id="output10"></span></div>
<div>value5 == 0 : <span id="output11"></span></div>
<div>value5 === 0: <span id="output12"></span></div>
<hr />
<div>value6 == value7 : <span id="output13"></span></div>
<div>value6 === value7 : <span id="output14"></span></div>
<div>value6.valueOf() == value7.valueOf() : <span id="output15"></span></div>
<div>value6.valueOf() === value7.valueOf() : <span id="output16"></span></div>
<div>value6 == value8 : <span id="output17"></span></div>
<div>value6 === value8 : <span id="output18"></span></div>
<hr />
</body>
</html>
解説
ボタンをクリックするとJavaScriptを実行します。
同じ文字列同士の比較処理です。value1,value2 に同じ文字列を代入し、== と === で比較します。
型も値も同じため、== も === もtrue になります。
var value1 = "Penguin";
var value2 = "Penguin";
var elem1 = document.getElementById("output1");
if (value1 == value2) {
elem1.innerText = "true";
} else {
elem1.innerText = "false";
}
var elem2 = document.getElementById("output2");
if (value1 === value2) {
elem2.innerText = "true";
} else {
elem2.innerText = "false";
}
同じ値で型が違う変数の比較です。値は同じため、== は true になりますが、 === は型が違うため false になります。
var value3 = Number(0.6);
var value4 = String(0.6);
var elem3 = document.getElementById("output3");
if (value3 == value4) {
elem3.innerText = "true";
} else {
elem3.innerText = "false";
}
var elem4 = document.getElementById("output4");
if (value3 === value4) {
elem4.innerText = "true";
} else {
elem4.innerText = "false";
}
boolean型の比較にです。true を代入した変数との比較です。
true
との値の比較では同じ値で同じ型のため == === ともに true となります。
1
との値の比較では、値は同じですが、型が異なるため、== は true となりますが、=== は false となります。
false
0
との値の比較は値が異なるため == === どちらの比較も結果は false になります。
var value5 = true;
var elem5 = document.getElementById("output5");
if (value5 == true) elem5.innerText = "true"; else elem5.innerText = "false";
var elem6 = document.getElementById("output6");
if (value5 === true) elem6.innerText = "true"; else elem6.innerText = "false";
var elem7 = document.getElementById("output7");
if (value5 == 1) elem7.innerText = "true"; else elem7.innerText = "false";
var elem8 = document.getElementById("output8");
if (value5 === 1) elem8.innerText = "true"; else elem8.innerText = "false";
var elem9 = document.getElementById("output9");
if (value5 == false) elem9.innerText = "true"; else elem9.innerText = "false";
var elem10 = document.getElementById("output10");
if (value5 === false) elem10.innerText = "true"; else elem10.innerText = "false";
var elem11 = document.getElementById("output11");
if (value5 == 0) elem11.innerText = "true"; else elem11.innerText = "false";
var elem12 = document.getElementById("output12");
if (value5 === 0) elem12.innerText = "true"; else elem12.innerText = "false";
Stringオブジェクトの比較です。オブジェクトの場合は、別のオブジェクトのため、== === は false となります。
var value6 = new String("ぺんぎんクッキー");
var value7 = new String("ぺんぎんクッキー");
var value8 = value6;
var elem13 = document.getElementById("output13");
if (value6 == value7) elem13.innerText = "true"; else elem13.innerText = "false";
var elem14 = document.getElementById("output14");
if (value6 === value7) elem14.innerText = "true"; else elem14.innerText = "false";
valueOf()メソッドで取得した値は、型も値も同じため、== === どちらもtrueになります。
var elem15 = document.getElementById("output15");
if (value6.valueOf() === value7.valueOf()) elem15.innerText = "true"; else elem15.innerText = "false";
var elem16 = document.getElementById("output16");
if (value6.valueOf() === value7.valueOf()) elem16.innerText = "true"; else elem16.innerText = "false";
同じオブジェクトでの比較は == === ともに true になります。
var elem17 = document.getElementById("output17");
if (value6 == value8) elem17.innerText = "true"; else elem17.innerText = "false";
var elem18 = document.getElementById("output18");
if (value6 === value8) elem18.innerText = "true"; else elem18.innerText = "false";
実行結果
上記のHTMLファイルをWebブラウザで表示します。下図のページが表示されます。[Exec]ボタンをクリックします。
ボタンをクリックすると、それぞれの
==
===
の比較結果が表示されます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-02-17
作成日: 2022-02-16