JavaScript

JavaScript 論理演算子「&&」と「||」

更新日:

Boolean型と組み合わせて使うのが「&&」と「||」です。これは論理演算子の「アンド」と「オア」と呼ばれます。

論理演算子と似ているものとして「&」と「|」の記号で表されるビット演算子の「アンド」と「オア」というものがあります。

ビットとは、コンピュータで計算につかう最小単位のことで、0 か 1 かのスイッチがOFFするのか、ONするのか、の区別をつけるためのものです。Booleanも「true」と「false」の2つの状態を表すものなので、この 0 と 1 とで表されるものとほぼ共通の制御の仕方が用意されています。0 と 1 で表されるものに対する計算をするのがビット演算子、true や false で表されるBoolean型に対して計算をするのが論理演算子です。

余談ですが、1ビットとは、0 と 1 は、2つの状態を表すことができ、2ビットは2桁の0と1なので「00」「01」「10」「11」の2x2の4つの状態を表すことができます。3ビットは3桁の0と1なので、「000」「001」「010」「011」「100」「101」「110」「111」の8パターンになり、これは2の3乗です。4ビットの4桁の0と1では、2の4乗の16パターン、8ビットは0と1が8桁なので2の8乗で256パターン、というように2倍2倍に表せる状態が増えていくものです。

パソコンの32ビットとか、64ビットとかは、1回の計算で2の32乗か64乗のデータを受け取って処理して結果を返す、ということができ、その1回の計算を 1秒間で 2ギガ回 など行うことから、CPUの周波数として、2GHz の性能がある、と表現されたりします。

サンプルコード

サンプルです。番号で後述します。

「and」「A そして B」「A かつ B」

0 and 0 → 0
0 and 1 → 0
1 and 1 → 0
1 and 1 → 1

2つの値を比較して、両方とも1の場合だけ、1になります。

これは、真偽値として考えると
偽 そして 偽 は 偽
偽 そして 真 は 偽
真 そして 偽 は 偽
真 そして 真 は 真
となります。

例えがないと、わけわからないですよね。

例えば、年齢が変数に入っているとして、年齢によって条件を決めるときに「and」を使ってみたソースコードが[1]の部分になります。

「10歳以上 かつ 20歳未満」なら、10代の人と判断する、というように複数の条件を組み合わせています。and は JavaScriptでは「&&」で表現されていて、「かつ」や「そして」の意味になります。

「or」「A または B」「A もしくは B」

0 or 0 → 0
0 or 1 → 1
1 or 1 → 1
1 or 1 → 1

2つの値を比較して、どちらかが、1の場合に、1になります。

これは、真偽値として考えると
偽 または 偽 は 偽
偽 または 真 は 真
真 または 偽 は 真
真 または 真 は 真
となります。

こちらの例は[2]のソースコードになります。

「10歳 もしくは 20歳」なら、区切りよい年齢と判断する、というように複数の条件を組み合わせています。or は JavaScriptでは「||」で表現されていて、「または」や「もしくは」の意味になります。

ifの書き方でも同じように処理分岐できる

[3]のコードは「&&」で書かれたものと、if と if の入れ子になった連続した書き方とで、同じ動きをする書き方です。

[4]のコードは「||」で書かれたものと、if else if とで連続した書き方とで、同じ動きをさせています。

仕事の実際の現場というか、よいプログラムを作るときには、このサンプルコードのような条件が2つなシンプルなものではなく、もっと多くの判定をする必要があります。

条件によって処理を分岐するときに、この「&&」も「||」も、if の連続も、else との組み合わせも、全てを使って読みやすいコードを書くことができることが大切です。

処理分岐はプログラムの基本中の基本で、仕組みはシンプルなものなので、理解して使いこなしていってください。

-JavaScript

Copyright© プログラミングアカデミー ゼロプラスワン , 2019 All Rights Reserved Powered by STINGER.