メインコンテンツまでスキップ

論理値と論理演算子

論理値

JavaScriptで利用できる「」として、これまで文字列数値を扱いました。 JavaScriptではこの他に、論理値と呼ばれる、「正しいか、正しくないか」を表すためのが存在します。

論理値は、true(真)またはfalse(偽)の2つだけです。ダブルクォーテーション"は必要ありません。通常のですので、変数代入したり、計算に使ったりすることができます。

値の種類・論理値付き

論理演算子

論理値に対して適用できる演算子が存在します。

document.write(true); // true
document.write(!false); // true
document.write(true && false); // false
document.write(true || false); // true

演算子の意味は次の通りです。!のみが作用する対象を1つしかとらないことに注意してください。

演算子意味詳細
!~ではないtrueならばfalsefalseならば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

&&||よりも比較演算子の方が優先順位が高いため、複数の条件を「かつ」「または」などで組み合わせることは容易です。

備考

次のコードは何を表示するでしょうか。そしてそれはなぜでしょうか。

let takaoHeight = 599;
let everestHeight = 8849;
let fujiHeight = 3776;
document.write(takaoHeight < everestHeight < fujiHeight);
document.write(takaoHeight = everestHeight);
  • JavaScript で、数値と論理値に比較演算子を適用すると、true1として、false0として比較されます。
  • =は代入演算子です。代入演算子評価されると、右辺のになります。

演習

クイズ番組で田中さんと佐藤さんが戦っています。 田中さんの点数がtanakaScoreで、佐藤さんの点数がsatoScoreで用意されています。

点数が100点以上で、かつ相手より20点以上高い点数の場合に勝ちとします。 田中さんが勝ちかどうかを表す変数isTanakaWinnerを作成してください。

const tanakaScore = 120;
const satoScore = 80;
const isTanakaWinner = /* ここに式を書いてください */;
document.write(isTanakaWinner); // true
ヒント

+, -, *, /などの算術演算子は、比較演算子よりも優先順位が高いです。

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