カテゴリ: JavaScript 更新日: 2025/09/02

JavaScriptのオプショナルチェーン(?.演算子)をオブジェクト操作で活用しよう|初心者でもわかる使い方

JavaScriptのオプショナルチェーン(?.演算子)をオブジェクト操作で活用しよう
JavaScriptのオプショナルチェーン(?.演算子)をオブジェクト操作で活用しよう

先生と生徒の会話形式で理解しよう

生徒

「JavaScriptでオブジェクトの中にある情報を取り出したいけど、時々ないこともあってエラーが出ます。どうしたら安全に取り出せますか?」

先生

「そんなときはオプショナルチェーンという仕組みを使うと便利です。これはプロパティが存在しない場合でもエラーにならず、安全に値を取り出せますよ。」

生徒

「オプショナルチェーンってどんな書き方で、どうやって使うんですか?」

先生

「それでは基本から具体例を交えて丁寧に解説しますね!」

1. オプショナルチェーン(?.演算子)とは?

1. オプショナルチェーン(?.演算子)とは?
1. オプショナルチェーン(?.演算子)とは?

オプショナルチェーンは、JavaScriptの?.(ドットの前に?)という記号を使った機能で、「もしそのプロパティやメソッドがあれば取り出す・呼び出す、なければundefinedにする」という意味です。

普通にオブジェクトの深いプロパティにアクセスするときに、途中のどこかが存在しないとエラーになります。オプショナルチェーンを使うと、そんなエラーを防げます。

2. どうしてオプショナルチェーンが必要?

2. どうしてオプショナルチェーンが必要?
2. どうしてオプショナルチェーンが必要?

例えば、次のようなオブジェクトを考えます。


const user = {
  name: "花子",
  address: {
    city: "東京"
  }
};

ここで、ユーザーの住所の郵便番号(postalCode)を取り出そうとすると、addressには郵便番号がありません。直接アクセスするとエラーになります。


console.log(user.address.postalCode); // エラーになる場合があります

なぜなら、postalCodeundefinedだからではなく、address自体が存在しなければ「存在しないもののさらに中を見る」ためエラーが発生します。

オプショナルチェーンを使うと安全に取り出せるので、こう書きます。


console.log(user.address?.postalCode); // undefined と表示されるだけ

もしaddressがなければundefinedが返り、エラーにはなりません。

3. オプショナルチェーンの基本的な使い方

3. オプショナルチェーンの基本的な使い方
3. オプショナルチェーンの基本的な使い方

オプショナルチェーンは、次のように使います。

  • obj?.propobjがあればpropを取得、なければundefined
  • obj?.[expr] :動的なプロパティ名も安全にアクセス可能
  • obj.method?.() :メソッドがあれば呼び出し、なければ無視

例えばメソッド呼び出しの例です。


const user = {
  greet() {
    console.log("こんにちは!");
  }
};

user.greet?.();  // こんにちは! と表示される
user.farewell?.(); // 何も起こらない(エラーにならない)

4. 実践例:オブジェクトの深い階層の安全なアクセス

4. 実践例:オブジェクトの深い階層の安全なアクセス
4. 実践例:オブジェクトの深い階層の安全なアクセス

実際のWebアプリなどで、ユーザー情報の中にオプションで設定されている情報があるとします。


const user = {
  name: "花子",
  settings: {
    theme: "dark"
  }
};

もしsettingsが無かったらuser.settings.themeを取得しようとするとエラーです。オプショナルチェーンを使うとこうなります。


const theme = user.settings?.theme ?? "light";
console.log(theme); // settingsがなければ"light"が表示される

ここで使われている??は「null合体演算子」といい、左側がnullまたはundefinedのときだけ右側の値を使います。つまり、設定がなければ「light」というデフォルト値を使うことができます。

5. オプショナルチェーンでエラーを防ぐ理由

5. オプショナルチェーンでエラーを防ぐ理由
5. オプショナルチェーンでエラーを防ぐ理由

JavaScriptでプロパティを連続してアクセスするとき、途中のどこかがnullundefinedだと「存在しないプロパティを参照しました」というエラーが出ます。

オプショナルチェーンを使うと、途中でnullundefinedがあればそこで処理が止まり、エラーを起こさずにundefinedを返します。これにより、プログラムが途中で止まらずに済みます。

6. オプショナルチェーンはどんなときに使う?

6. オプショナルチェーンはどんなときに使う?
6. オプショナルチェーンはどんなときに使う?
  • APIから取得したデータの一部が無い可能性があるとき
  • ユーザー入力でオプションの情報があるかもしれないとき
  • 深い階層のオブジェクトに安全にアクセスしたいとき

プログラムのエラーを減らし、コードの安全性を高めたいときに役立ちます。

7. 注意点と補足

7. 注意点と補足
7. 注意点と補足
  • オプショナルチェーンは読み取り専用ではなく、メソッドの呼び出しにも使えます。
  • サポートされている環境で使う必要があります。古いブラウザでは動かないことがあります。
  • 演算子の後に続くものが存在しなければ、すぐにundefinedを返します。
関連記事:
カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptの正規表現で繰り返し指定(* + ? {n,m})を学ぼう
New2
TypeScript
TypeScriptとESNextの連携を完全ガイド!最新機能を使いこなす設定と対応法
New3
JavaScript
JavaScriptの正規表現で任意の1文字(.)や文字クラスを使う方法
New4
TypeScript
TypeScriptで非同期イテレーター(for await of)を活用する
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptの日時操作Tips!実務で役立つテクニック集
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptのif文の使い方を完全ガイド!初心者でもわかる条件分岐
No.5
Java&Spring記事人気No5
TypeScript
TypeScriptでESLintとPrettierを導入!コード整形ルールを自動で統一する方法
No.6
Java&Spring記事人気No6
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptの配列の要素にアクセスする方法(インデックス番号の使い方)
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptの正規表現で文字列を置換する方法(replaceメソッド)