複雑な条件式とは何か
「複雑な条件式」とは、単純な if (x > 10) のような一つの条件ではなく、複数の条件を組み合わせて判定する式のことです。例えば「年齢が18歳以上 かつ 会員である」や「入力が空文字 または null」のように、論理演算子(AND, OR, NOT)を組み合わせて書きます。
AND(&&)と OR(||)の組み合わせ
複雑な条件式では AND と OR を組み合わせることが多いです。
- AND(
&&)は「両方が真なら真」 - OR(
||)は「どちらかが真なら真」
const age = 20;
const isMember = true;
if (age >= 18 && isMember) {
console.log("成人の会員です");
}
const input = "";
if (input === "" || input === null) {
console.log("入力が空です");
}
JavaScriptNOT(!)を加えた複雑な条件
否定を組み合わせるとさらに複雑になります。例えば「ログインしていない、または権限がない場合はアクセス拒否」といった条件です。
const loggedIn = false;
const isAdmin = false;
if (!loggedIn || !isAdmin) {
console.log("アクセスできません");
}
JavaScript優先順位と括弧の活用
論理演算子には優先順位があります。! が最優先、次に &&、最後に ||。複雑な条件では括弧を使って意図を明確にしましょう。
const age = 17;
const isMember = true;
const hasTicket = false;
if ((age >= 18 && isMember) || hasTicket) {
console.log("入場できます");
} else {
console.log("入場できません");
}
JavaScriptこの例では「成人かつ会員」または「チケットを持っている」なら入場可能です。
実用例で理解する
例題1:試験合格と特典
const score = 85;
const isMember = true;
if (score >= 60 && (isMember || score >= 90)) {
console.log("合格+特典あり");
} else {
console.log("条件を満たしていません");
}
JavaScript「60点以上かつ(会員または90点以上)」なら特典付き合格です。
例題2:ログインと権限チェック
const loggedIn = true;
const role = "user";
if (loggedIn && (role === "admin" || role === "editor")) {
console.log("編集ページにアクセスできます");
} else {
console.log("権限がありません");
}
JavaScriptログイン済みで、管理者か編集者ならアクセス可能です。
例題3:入力値の検証
const value = "";
if (value === null || value === "" || Number.isNaN(Number(value))) {
console.log("不正な入力です");
} else {
console.log("有効な入力です");
}
JavaScriptnull、空文字、数値変換できない場合は「不正」と判定します。
注意点とコツ
条件を整理する
複雑な条件は一度に書くと読みにくくなります。部分的に変数へ切り出すと理解しやすくなります。
const isAdult = age >= 18;
const canEnter = isAdult && isMember;
if (canEnter) {
console.log("入場できます");
}
JavaScript読みやすさを優先する
短く書けても、意図が伝わらない条件式はバグの原因になります。括弧や変数名を使って「何を判定しているか」を明確にしましょう。
まとめ
- 複雑な条件式は AND(&&)、OR(||)、NOT(!)を組み合わせて書く。
- 優先順位は「! → && → ||」なので、括弧で意図を明示する。
- 実用例:合格判定、権限チェック、入力検証など。
- 読みやすさを意識して変数に切り出すと理解しやすくなる。
初心者は「複雑な条件は段階的に分けて考える」と覚えるとスムーズに理解できます。
