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

厳密非等価演算子

pointこの用語のポイント

point演算子だよ

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

point見た目は「!==」(ビックリマークとイコールが2つ)だよ

スポンサーリンク

簡単に書くよ

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

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

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

「!==」(ビックリマークとイコールが2つ)
です。


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つ:厳密等価演算子)はセットで覚えてあげてください。

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

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

以上を踏まえて

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

が「厳密非等価演算子」です。
演算子の見た目は「!==ビックリマークとイコールが2つ)です。

厳密非等価演算子14

厳密非等価演算子は厳密等価演算子の反対です。

1.値が違う(例えば「10」と「20」を比較した場合)
2.型が違う(例えば「10」と「"10"」を比較した場合)


のどちらかであればOK扱いになります。

気が向いたら、セットで覚えてあげてください。

厳密等価演算子(===):値が同じで型も同じだったらOKの扱い
厳密非等価演算子(!==):値が違うか型が違えばOKの扱い


です。

あと「厳密等価演算子」ではなく「厳密等価演算子」と表現されることも あります。
頑張って調べたのですが、どちらが正しいのかは分かりませんでした。
ゴメンなさい。


image piyo2

一言でまとめるよ

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

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

おまけ



書籍画像
わわわ説明術コラム
宣伝だよ
つくって、壊して、直して学ぶ Kubernetes入門
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
「技術書」の読書術 達人が教える選び方・読み方・情報発信&共有のコツとテクニック