「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

厳密等価演算子

pointこの用語のポイント

point演算子だよ

point演算子の右側と左側が同じか型まで含めて比較するよ

point見た目は「===」(イコール3つ)だよ

スポンサーリンク

簡単に書くよ

厳密等価演算子(読:ゲンミツトウカエンザンシ 英:strict equality operator)とは

プログラミングで出てくる演算子のひとつ
であり

「右側の値と左側の値は、変数の型(変数の種類)まで含めて同じですか~?」な比較を意味する演算子
です。
演算子の見た目は

「===」(イコール3つ)
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

変数
変数の型
演算子


について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

変数は「プログラミング言語における『値を入れておく箱』」です。
処理の途中で値を入れたり、逆に取り出したりできます。

厳密等価演算子

変数の型は「この箱(変数)には、どんな種類の物を入れていいですよ」な決まりです。

厳密等価演算子2

例えば、そうですね。
手ごろな大きさのダンボール箱が あったとしましょう。

厳密等価演算子3

ピヨ太君がやってきて、その箱にマジックで大きく「食べ物用」と書きました。

厳密等価演算子4

「食べ物用」と書いたので、このダンボールに入れていいのは食べ物だけです。
食べ物以外を入れようとすると、ピヨ太君にメッチャ怒られます。

厳密等価演算子5

この話におけるダンボール箱が「変数」です。
マジックで書いた「食べ物用」が「変数の型」になります。

厳密等価演算子6

変数の型には、いろいろな種類があります。
数字を入れられる箱、文字を入れられる箱、文字列を入れられる箱、いろいろです。

演算子は「どんな演算をするか表す記号」です。
「+」「-」「*(×)」「/(÷)」をはじめ、なんか いろいろ あります。

厳密等価演算子7

以上を踏まえて

左側の値と右側の値が同じか「型まで含めて」比較するときに使う演算子

が「厳密等価演算子」です。
演算子の見た目は「===(イコール3つ)です。

厳密等価演算子8

この演算子のポイントは「型まで含めて」の部分です。

例えば

1.変数aの値は10です
2.変数bの値は10です
3.変数aの値と変数bの値は同じですか?


と聞かれたとします。
変数aの値も変数bの値も同じ「10」です。
普通に考えたら「変数aの値と変数bの値は同じです」と答えるでしょう。

厳密等価演算子9

それでは、今度はどうでしょう。

1.変数aの値は数字の10です
2.変数bの値は文字の"10"です
3.変数aの値と変数bの値は同じですか?


と聞かれました。
変数aの値と変数bの値は同じですかね。

厳密等価演算子10

変数aに入っている値も変数bに入っている値も、どちらも「10」です。
ですから「変数aの値と変数bの値は同じ」と考えることもできます。

厳密等価演算子11

ですが、変数aは数字です。
変数bは文字です。
型にも注目すると、変数aと変数bは違いますよね。

厳密等価演算子12

この話における後者の考え方を導入した比較演算子が厳密等価演算子です。
意味が同じでも「10」と「"10"」では「数字と文字だから違うね!」と判定します。
文字通り「厳密」に比較するのです。

厳密等価演算子13

もう少し実際のプログラミングに近い例も見てみましょう。
使うプログラミング言語はJavaScriptです。

例えば、そうですね。
以下のような処理が あったとしましょう。

var a = 10;
var b = "10";

if(a == b){
    alert("aとbは同じ");
}

if(a === b){
    alert("aとbは型まで含めて同じ");
}


まず

var a = 10;

で、変数aに数字の「10」を入れています。

次に

var b = "10";

で、変数bに文字の「10」を入れています。

次に

if(a == b){
    alert("aとbは同じ");
}


で「変数aと変数bが同じ値か」を判定しています。
==(イコール2つ)は「右側の値と左側の値は同じですか~?」な比較を意味する演算子です。
等価演算子」と呼ばれます。

最後に

if(a === b){
    alert("aとbは型まで含めて同じ");
}


で「変数aと変数bが型まで含めて同じ値か」を判定しています。
「===」(イコール3つ)が本ページで説明している厳密等価演算子です。

ここまでの説明書きをサンプルコードの中に書き込むと、以下のようになります。

//変数aに数字の10を入れる
var a = 10;

//変数bに文字の10を入れる
var b = "10";

//変数aと変数bが同じ値か判定
if(a == b){
    alert("aとbは同じ");
}

//変数aと変数bが型まで含めて同じ値か判定
if(a === b){
    alert("aとbは型まで含めて同じ");
}


このサンプルを実行すると「aとbは同じ」は表示されますが「aとbは型まで含めて同じ」は表示されません。
型が数字と文字で違うからです。

「==」(イコール2つ:等価演算子)と「===」(イコール3つ:厳密等価演算子)はセットで覚えてあげてください。

「===」が存在するプログラミング言語において「==」は単純な値の比較です。
変数の型(変数の種類)は気にしません。
数字と文字の比較であろうと、値が同じであれば「同じだよ~」と判定します。

それに対して「===」は変数の型(変数の種類)を気にします。
数字と文字の比較のように、変数の種類が違えば、例え値が同じであろうと「違うよ~」と判定します。


image piyo2

一言でまとめるよ

まぁ「厳密等価演算子」って単語が出てきたら「見た目は『===』で、右の値と左の値が同じか型(変数の種類)まで含めて比べるときに使う演算子なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像042
書籍画像001

おまけ

■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
実務で役立つ ログの教科書 基礎知識から収集方法・分析手法・トラブルシューティング・パフォーマンス最適化・機械学習での活用まで
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
エンジニアのための生成AI入門 はじめての生成AIアプリ開発からエージェント開発まで