JavaScriptの論理演算子(&&/||/!)とは?初心者向けに使い方を解説

JavaScript

「もしユーザー名が入力されていて、かつパスワードも正しいならログインさせる」
「もし日曜日、または祝日ならお店を休みにする」

現実のルールには、このように複数の条件が組み合わさったものがたくさんあります。これまでのif文だけでは、一つの条件しか判定できませんでしたが、「論理演算子」を使えば、これらをたった一行でスマートに記述できるようになります。

本記事では、3つの主要な演算子&&、||、!の使い方はもちろん、実務でよく使われるテクニックまでを詳しく解説します。

論理演算子とは?「条件を連結する」ための道具

論理演算子とは、複数の条件式を「つなげたり」「ひっくり返したり」するための記号のことです。

JavaScriptでは、主に以下の3種類を使います。

  • &&(論理積/AND):「〜かつ〜」
  • ||(論理和/OR):「〜または〜」
  • !(論理否定/NOT):「〜ではない」

これらを使うことで、『JavaScriptのif文とは?条件分岐の書き方と使い方を初心者向けに解説』で学んだ条件分岐を、より複雑で実用的なものへと進化させることができます。

「&&(AND)」の使い方:すべての条件が正しいとき

&&は、左側の条件と右側の条件がどちらもtrue(正しい)ときにだけ、全体としてtrueを返します。

基本の書き方

const age = 25;
const hasLicense = true;

// 「20歳以上」かつ「免許を持っている」場合
if (age >= 20 && hasLicense === true) {
  console.log("車を運転できます");
}

3つ以上の条件をつなげる

&&は2つだけでなく、いくつでもつなげることができます。

// 「20歳以上」かつ「免許あり」かつ「お酒を飲んでいない」
if (age >= 20 && hasLicense && !isDrunk) {
  console.log("運転OKです");
}

すべての条件がtrueにならない限り、処理は実行されません。

「||(OR)の使い方:どれか一つでも正しいとき

||は、左側と右側の条件のうち、少なくともどちらか一方がtrueであれば、全体としてtrueを返します。

基本の書き方

const day = "Sunday";

// 「土曜日」または「日曜日」の場合
if (day === "Saturday" || day === "Sunday") {
  console.log("今日はお休みです!");
}

どちらもtrueの場合はどうなる?

||は、「どちらか一方が正しい、または両方が正しい」ときにtrueとなります。両方の条件が満たされていても問題なく処理が実行されます。

解説:&&と||の違い

ここまでで「&&」と「||」それぞれの意味を見てきましたが、初心者の方がよく混乱するのがこの2つの違いです。

まずは、シンプルに押さえましょう。

  • &&(AND):すべての条件を満たす必要がある(厳しい条件)
  • ||(OR):どれか1つ満たせばOK(ゆるい条件)

&&(AND)の場合

「ユーザー名もパスワードも正しいときだけログインできる」

const isUserValid = true;
const isPasswordCorrect = true;

if (isUserValid && isPasswordCorrect) {
  console.log("ログイン成功");
}

両方がtrueでないとログインできない

||(OR)の場合

「土曜日または日曜日ならお休み」

const day = "Sunday";

if (day === "Saturday" || day === "Sunday") {
  console.log("今日はお休みです");
}

どちらか1つ当てればOK

&&と||の比較

// &&:両方必要(厳しい)
if (A && B) {
  // AもBもtrueのときだけ実行
}

// ||:どちらかでOK(ゆるい)
if (A || B) {
  // AかBのどちらかがtrueなら実行
}

もし「&&」と「||」の違いに迷った場合

  • 条件を「厳しくしたい」→ &&
  • 条件を「ゆるくしたい」→ ||

この違いを理解できると、if文での条件分岐が一気に書きやすくなります!

「!(NOT)」の使い方:条件を逆転させる

!は、その直後に続く条件の結果を「真逆」にします。

基本の書き方

const isLoggedIn = false;

// 「ログインしていない(falseの逆 = true)」場合
if (!isLoggedIn) {
  console.log("ログインしてください");
}

読みやすさへの配慮

!isFull(満員ではない)のように、直感的に理解できる変数名と組み合わせるのがコツです。

if文や三項演算子との実践的な組み合わせ

優先順位をカッコ()で指定する

複数の演算子を混ぜる場合、カッコを使って「どの条件をひとまとめにするか」を指定します。

// 「20歳以上」で、かつ「会員である、またはクーポンを持っている」
if (age >= 20 && (isMember || hasCoupon)) {
  console.log("割引適用!");
}

三項演算子で結果を代入する

JavaScriptの三項演算子とは?if文との違いと使い方を初心者向けに解説』で解説している「三項演算子」と一緒に使うと、さらにコードが短くなります。

const canEnter = (age >= 18 && hasTicket) ? "入場OK" : "入場不可";

やってはいけない!論理演算子の「NG例」

条件を連結しすぎて読みづらい

// 【NG例】一目で理解できない
if (a === 1 && b === 2 || c === 3 && d === 4 && e === 5) { ... }

解決策:変数に切り出す

一度結果を変数に入れて、名付けをすることで劇的に読みやすくなります。

const isUserValid = (a === 1 && b === 2);
const isDataReady = (c === 3 && d === 4 && e === 5);

if (isUserValid || isDataReady) { ... }

実務でよくある!論理演算子の「賢い使い方」まとめ

実は、論理演算子にはif文以外でも使われる「短絡評価(たんらくひょうか)」というテクニックがあります。

デフォルト値を設定する(||の活用)

const inputName = "";
const userName = inputName || "名無しさん"; // 空なら右側の値が採用される

データがある時だけ処理する(&&の活用)

// userが存在する場合のみ、右側の処理を実行する
user && console.log(user.name);

まとめ

論理演算子は、プログラムに「複雑な判断」をさせるための知恵です。

  1. &&(AND)は、すべてが正しい時にtrueになる。
  2. ||(OR)は、どれが一つでも正しい時にtrueになる。
  3. !(NOT)は、条件の結果をひっくり返す。
  4. 連結しすぎず、変数を使って整理するのがプロの書き方。

まずは「AかBか」の単純な組み合わせから試してみてください。複雑な条件をたった一行で制御できる楽しさを知れば、開発効率は格段にアップします!

タイトルとURLをコピーしました