title |
---|
論理値と論理演算子 |
{/* prettier-ignore */} JavaScript で利用できる「値」として、これまで文字列と数値を扱いました。 JavaScript ではこの他に、論理値と呼ばれる、「正しいか、正しくないか」を表すための値が存在します。
{/* prettier-ignore */}
論理値は、true
(真)または false
(偽)の 2 つだけです。ダブルクォーテーション "
は必要ありません。通常の値ですので、変数に代入したり、計算に使ったりすることができます。
{/* prettier-ignore */} 論理値に対して適用できる演算子が存在します。
document.write(true); // true
document.write(!false); // true
document.write(true && false); // false
document.write(true || false); // true
各演算子の意味は次の通りです。!
のみが作用する対象を 1 つしかとらないことに注意してください。
演算子 | 意味 | 詳細 |
---|---|---|
! |
~ではない | true ならば false 、false ならば true |
&& |
かつ | 両方 true ならば true 、どちらか 1 つでも false ならば false |
|| |
または | 両方 false ならば false 、どちらか 1 つでも true ならば true |
具体的な使用例を考えてみましょう。
モンスターが大きいかどうかを表す変数 isMonsterBig
と、ハンターが強いかどうかを表す変数 isHunterStrong
が用意されています。このとき、ハンターがモンスターと戦うべきかどうかを表す変数 shouldFight
を作りたいとします。ハンターは自分が強いときかモンスターが小さいときに戦うべきだとしたら、変数 shouldFight
は次のようになるでしょう。
const isMonsterBig = true;
const isHunterStrong = false;
const shouldFight = isHunterStrong || !isMonsterBig; // false
比較演算子は、複数の値を比較して、単一の論理値を得ます。
年齢を判定するプログラムを考えましょう。
const age = 14;
document.write(age === 15); // false
document.write(age === 14); // true
===
は左辺と右辺が等しいかどうか判定する比較演算子です。
2 行目では age
と 15 とは等しくないので false
が、3 行目では age
と 14 とは等しいので true
が表示されます。
各演算子の意味は次の通りです。
演算子 | 意味 | 詳細 |
---|---|---|
=== |
等しい | 左辺と右辺が等しければ true |
!== |
等しくない | 左辺と右辺が等しければ false |
< |
小なり | 左辺が右辺より小さければ true |
<= |
以下 | 左辺が右辺以下ならば true |
> |
大なり | 左辺が右辺より大きければ true |
>= |
以上 | 左辺が右辺以上ならば true |
さらに具体的な使用例を考えてみましょう。
ジェットコースターに乗れるかどうかを表す変数 canRideRollerCoasters
を考えます。年齢を表す変数 age
と身長を表す変数 height
が与えられたとして、10 歳以上かつ身長が 120cm 以上でないと乗れないとしたら以下のようになるでしょう。
const age = 15;
const height = 155;
const canRideRollerCoasters = age >= 10 && height >= 120; // true
&&
や ||
よりも比較演算子の方が優先順位が高いため、複数の条件を「かつ」「または」などで組み合わせることは容易です。
:::info
次のコードは何を表示するでしょうか。そしてそれはなぜでしょうか。
{/* prettier-ignore */}
let takaoHeight = 599;
let everestHeight = 8849;
let fujiHeight = 3776;
document.write(takaoHeight < everestHeight < fujiHeight);
document.write(takaoHeight = everestHeight);
- JavaScript で、数値と論理値に比較演算子を適用すると、
true
は1
として、false
は0
として比較されます。 =
は代入演算子です。代入演算子の式が評価されると、右辺の値になります。
:::
クイズ番組で田中さんと佐藤さんが戦っています。
田中さんの点数が tanakaScore
で、佐藤さんの点数が satoScore
で用意されています。
点数が 100 点以上で、かつ相手より 20 点以上高い点数の場合に勝ちとします。
田中さんが勝ちかどうかを表す変数 isTanakaWinner
を作成してください。
const tanakaScore = 120;
const satoScore = 80;
const isTanakaWinner = /* ここに式を書いてください */;
document.write(isTanakaWinner); // true
:::tip
+
, -
, *
, /
などの算術演算子は、比較演算子よりも優先順位が高いです。
const isBig = 10 + 5 > 10 - 3; // 15 > 7 なので true
:::
const tanakaScore = 120;
const satoScore = 80;
const isTanakaWinner = tanakaScore >= 100 && tanakaScore - satoScore >= 20;
document.write(isTanakaWinner); // true