1. 公開中の作品は表示する
  2. 非公開の作品は表示しない
  3. 作品が null なら表示しない
  4. 引数を渡さず undefined でも表示しない
  5. タイトルが空文字でも閲覧数が 0 でも公開中なら表示する
コース一覧
JavaScript入門:コードを動かす
論理演算子と短絡評価

JavaScript入門:コードを動かす

HTML に JavaScript を読み込むところから始め、コンソール、文字列と数値、let と const、データ型、型変換、比較・論理・三項・null 合体演算子を学ぶ全 23 レッスン(335 分)の入門コースです。最後は、変数と式を使ってプロフィールの見出し用の値を組み立てます。if 文、配列とループ、DOM 操作は後続コースで扱います。

1
はじめての JavaScript
01. HTML に JavaScript を読み込む5分
02. console.log で表示する15分
03. 文字列を連結する15分
04. 四則演算15分
05. コメントで意図を残す15分
06. エラーを読んでみる15分
07. つくる 起動メッセージ20分
08. 第1章まとめクイズ10分
2
変数とデータ型
01. let と const を使い分ける15分
02. typeof で型を調べる15分
03. 型を変換する15分
04. 真偽値と falsy な値15分
05. null と undefined を見分ける15分
06. テンプレートリテラル15分
07. つくる プロフィールを変数にする20分
08. 第2章まとめクイズ10分
3
演算子と式
01. 比較演算子と ===15分
02. 論理演算子と短絡評価15分
03. 三項演算子で簡潔に15分
04. ?? で既定値を用意する15分
05. 演算子の優先順位15分
06. つくる 表示名を決める20分
07. 第3章まとめクイズ10分

論理演算子と短絡評価

論理演算子の短絡評価
解説

このレッスンで分かること

  • &&(かつ)、||(または)、!(〜でない)で条件を組み合わせます
  • && と || は真偽値ではなく、左右のどちらかの値そのものを返します

条件がひとつで済むことはめったにない

プロフィールサイトに作品を並べるとき、判定はたいてい重なります。「作品のデータが届いていて、かつ公開中のときだけ表示する」のように、複数の条件を組み合わせたい。これを担当するのが論理演算子です。

演算子読み方意味例
&&アンド両方が真のとき真hasPhoto && likes >= 100
||オアどちらかが真なら真isPinned || hasPhoto
!ノット真偽を反転する。返るのは必ず true か false!isPinned

JavaScript

const hasPhoto = true; const likes = 120; console.log(hasPhoto && likes >= 100); // true 両方満たす console.log(hasPhoto && likes >= 200); // false 右が偽 console.log(hasPhoto || likes >= 200); // true 左が真 console.log(!hasPhoto); // false 反転

返るのは true / false ではなく値そのもの

ここが JavaScript の論理演算子でいちばん大事なところです。&& と || は真偽値を作って返しているのではなく、左右のオペランドのどちらかをそのまま返しています。

JavaScript

console.log("プロフィール" && "作品一覧"); // 作品一覧 console.log("" && "作品一覧"); // 空文字 console.log("プロフィール" || "作品一覧"); // プロフィール console.log(0 || 120); // 120

ルールは 2 つだけです。A && B は A が falsy なら A を、truthy なら B を返します。A || B は A が truthy なら A を、falsy なら B を返します。第2章で扱った falsy の感覚が、そのまま論理演算子の挙動の理解につながります。

値そのものが返るということは、戻り値が boolean とは限らないということです。関数から真偽を返したいときは Boolean() で包んで形をそろえます。包み忘れると、=== false で比べているコードからは見えないバグになります。

解説

! を 2 つ重ねた !!value という書き方もあります。反転の反転なので Boolean(value) と同じ意味ですが、読みやすいのは Boolean のほうです。新しく書くならこちらを使ってください。

左辺で決まると右辺は読まれない

&& と || は、左辺だけで結果が確定した時点で右辺の評価をやめます。これを短絡評価と呼びます。

JavaScript

function log(value) { console.log("評価された", value); return value; } false && log("右辺"); // 何も表示されない true || log("右辺"); // 何も表示されない true && log("右辺"); // 評価された 右辺

単なる最適化ではなく、意図して使うテクニックでもあります。

JavaScript

const profile = null; // console.log(profile.bio); // TypeError で落ちる console.log(profile && profile.bio); // null エラーにならない

profile が null のとき、profile.bio を単体で書くと実行時エラーになります。profile && を左に置けば、profile が falsy の時点で右辺が読まれないため、落ちずに済みます。この「ガード」の書き方は現場のコードに山ほど出てきます。

よくある間違い

  • && の戻り値を boolean だと思い込む — likes && likes >= 100 は、likes が 0 のとき 0 を返します。false ではありません

JavaScript

console.log(0 && true); // 0 console.log(Boolean(0 && true)); // false
  • a === 1 || 2 と書く — 「a が 1 または 2」のつもりでも、2 は truthy なので式全体が常に truthy になります。a === 1 || a === 2 のように、比較を 2 回書いてください

要件

  1. 関数名は isVisible、引数は work の 1 つにすること
  2. work が null や undefined のときもエラーにせず false を返すこと
  3. 戻り値は必ず boolean (true または false) にすること
  4. && の短絡評価を使い、Boolean() で真偽値にそろえること

入出力例

isVisible({"published":true,"title":"プロフィールサイト","views":120,"year":2026}) → true isVisible({"published":false,"title":"自己紹介カード","views":40,"year":2026}) → false isVisible(null) → false isVisible() → false isVisible({"published":true,"title":"","views":0,"year":2026}) → true

ヒント

`work` が falsy なら右辺は評価されない、という短絡評価の性質を使います

`work && work.published` と書くと、`work` が null のときは null が返ります

そのままだと戻り値が boolean になりません。`Boolean(...)` で包んで形をそろえてください

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

関連レッスン

  • 三項演算子で簡潔に

    条件によってふたつの値を切り替える演算子を学びます。式なので、そのまま return や変数への代入に書けます。

  • ?? で既定値を用意する

    値が null または undefined のときだけ既定値に差し替える演算子を学びます。|| と違って 0 や空文字はそのまま残ります。

  • 演算子の優先順位

    ひとつの式に複数の演算子が並んだとき、どれから評価されるかの順序を学びます。丸括弧で明示すれば順序を変えられます。

  • つくる 表示名を決める

    第3章の総まとめです。ニックネーム、肩書き、作品数から、プロフィールの見出しに出す値を演算子だけで決めます。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 論理演算子and=両方True、or=どちらかTrue、not=反転。
  • 演算子//は切り捨て除算(7 // 2 = 3)。
  • JavaScriptWeb で動的な振る舞いを担う言語
  • 戻り値呼び出し元への返答を表す点線矢印
  • 関数処理に名前を付けて再利用できる単位
  • 評価出力品質を数値化して継続改善する活動
  • 引数位置引数=順番で渡す。
main.js
学習モード
エディタを読み込んでいます

メモ

論理演算子と短絡評価

⌘S で保存