Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

  1. トップページ
  2. JavaScript入門編 - 比較演算子と真偽値

比較演算子と真偽値

みなさまどうも。いかがお過ごしでしょうか。

では続いて『比較演算子』(ひかくえんざんし)と『真偽値』(しんぎち)について勉強していきましょう。

真偽値は最初の方の記事でも軽く紹介しましたね。『真偽値』は『真理値』(しんりち)もしくは『論理値』(ろんりち)とも呼ばれます。私の体感では『真偽値』が一般的な気がします。英語では『boolean』(ブーリアン)と呼ばれ、JavaScriptでの型のチェックの際などに『boolean』という単語が出てきたりします。こちらも覚えておきましょう。

まず『比較演算子』についてですが、これは数値の大きさを比べたり文字列が同じ文字なのか比べたりして、『』(true)か『』(false)を返す処理を行う演算子のことを指します。この『true』(トゥルー)と『false』(フォルス)が『真偽値』になります。比較して、それが正しければ『true』、間違っていれば『false』を返します。

さっそく謎な感じですね。百聞は一見に如かず、というわけで記述してみましょう。

ここに数値の『1』と『2』があったとして、どっちが大きいかというと『2』の方が大きいわけです。これを『比較演算子』を使ってコンピューターに比較処理をさせることができます。

数学をちょっと思い出してみてください、『<』とか『<=』とか『>』とか『>=』とかを使った比較する計算式がありましたね、まさにあれです。

すごく簡単な記述ですが、以下のように『console.log関数』の中で『比較演算子』の『<』を使用してみます。

console.log(1 < 2);

さて、これを読み込ませてコンソールを確認してみてください。『1』よりも『2』が大きいのは正解なので『true』と出力されているはずです。

じゃあ今度は『<』を逆にしてみましょう。

console.log(1 > 2);

『2』よりも『1』が大きいのは間違っていますね。なので『false』と出力されます。

これが『比較演算子』と『真偽値』の基本的な概要になり、要するにいくつかの要素を比べて『正しい』か『正しくないか』を判断しているだけの話になります。ところがどっこい、プログラミングにおいて、この『正しい』か『正しくないか』というのは非常に良く使うアルゴリズム(考え方)になります。『もし~が~だったらこっちの処理で、もし~が~だったらこっちの処理を実行させる』といった考え方です。この『真偽値』を使った処理は20行に一回出てくるくらいの勢いです。とっても大切でよく使います。

というわけでもっと細かく見て行きましょう。

以下は『比較演算子』の一覧です。

== オペランド同士が等しいならば『true』を返します。
=== オペランド同士が厳密に等しいならば『true』を返します。
!= オペランド同士が等しくないならば『true』を返します。
!== オペランド同士が厳密に等しくないならば『true』を返します。
> 左オペランドが右オペランドより大きいならば『true』を返します。
>= 左オペランドが右オペランドより大きいまたは等しいならば『true』を返します。
< 左オペランドが右オペランドより小さいならば『true』を返します。
<= 左オペランドが右オペランドより小さいまたは等しいならば『true』を返します。

※比較演算子についてより詳しく知りたい場合は以下を参照すると良いです。mozillaさんの公式サイトになります。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

さて、ここで『オペランド』という言葉がでてきました。前の記事でもちょっとでてきましたね。これは比較される要素の事を指します。

例えば『1 < 2』であるならば『1』と『2』が『オペランド』になります。厳密な言い方をすると演算の対象となる値や変数のこと全般を指す言葉だったりします。別名では『被演算子』とも呼ばれます。こっちのほうがイメージしやすいかもしれませんね。

ではひとつひとつみていきましょう。まず両方が等しいかどうかを判断する『===』についてです。

『1 === 1』と記述すると『1』と『1』は等しいのでこれは『true』となります。これは特に難しくないかと思います。文字列なども比較できます。『"hoge" === "hoge"』とすれば両方、文字列の『hoge』となりますので『true』となります。

続いては等しくない、という演算を行う『!==』です。『1 !== 2』と記述すると『オペランド』同士が等しくないので『true』となります。『1 !== 1』と記述すると『1』と『1』は等しいので『false』となります。こちらも文字列同士を比較できます。『"hoge" !== "hoge"』は両方、文字列の『hoge』なので『false』となります。

JavaScript以外の他の言語において両方が等しいかどうかを判断する記号は一般的に『==』となります。『=』が2つですね。等しくない、という場合には『!=』を使用します。

JavaScriptでも『==』と『!=』を使用することができますがちょっと問題があり、『==』や『!=』を使用すると『型の変換』がプログラマーの見えないところで自動で行われてしまいます。

型の変換とは『文字列』としての『1』が勝手に『数値』に変換されたりして比較されてしまうということです。以下は文字列としての『1』と数値としての『1』を比べた場合です。

console.log("1" == 1); // これは『true』となってしまう。

プログラミングにおいて『厳格な比較』以外の比較は基本的に行うメリットがありません。プログラミングは厳格な演算が行われるという事実を元に構築していくからですね。ですのでJavaScriptにおいてオペランドが等しいかどうかを比較させる場合は『===』か『!==』を使用するのが一般的です

もちろん『==』や『!=』を使用することも間違いではないです。厳密な比較をしたくない処理を構築する必要があるならば『==』や『!=』を使ってしまって問題ありませんので用途によって使い分けるようにしましょう。

次は『>』と『>=』です。これは算数とか数学の時に勉強した『小なりイコール』ってやつですね。左のオペランドと比べて右のオペランドが小さいか、もしくは同じならば『true』となります。

  • 『2 > 1』 → 『true』
  • 『1 > 1』 → 『false』
  • 『0 > 1』 → 『false』
  • 『1 >= 1』 → 『true』

『<』と『<=』についても逆になっただけですので問題ないかと思います。

さて、ちょっと注意点ですが、『>』と『>=』と『<』と『<=』は大きさを比べるものなので基本的には『数値』を比較するものだったりします。文字列を入れて比較してもエラーにはなりませんがその場合は『false』が返ってくるはずです。ただし、私もこれまで全てのブラウザで実験して『false』が返ってくると確認したわけではないので使わないほうが無難かもしれません。そこは注意しましょう。

そして全ての『比較演算子』で、変数を使用することができます。

var elem1 = 1,
elem2 = 2;
console.log(elem1 < elem2); // 『true』が返ってきます。

このようにちゃんと変数の中身を展開したうえで比較できますのでこれも覚えておきましょう。

以上で『比較演算子』と『真偽値』についての解説は終わりたいと思いますがいかがでしたでしょうか?

とりあえず『比較演算子』を使用すると『真偽値』が返ってくるというところは掴めたと思います。

さて、ただ単純に『真偽値』が返ってくる処理だけではあまり意味がありませんので次の記事では『if文』について解説していきたいと思います。『if文』と『真偽値』を組み合わせると非常に使い勝手の良い処理ができあがります。

というわけでこの辺で一旦切りたいと思います。

引き続き頑張っていきましょう。ではではー。

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。