質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

238閲覧

JavaScriptコードにおける「?.」はどのような意味を持つのでしょうか?

yamada2020

総合スコア1

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/08/09 14:30

編集2020/08/09 14:32

業務中、あるJavaScriptのファイルを開くと下のようなコードがありました。

let name = person?.name ?? '';

コードにある?.はどのような意味を持つのかわかりません。

コードの意味は下のようなものかなと推測しています。

??Null合体演算子ですので、person?.namenullまたはundefinedの場合に空文字列を返し、そうでない場合、person?.nameを返すのだと思います。
実際そのような挙動になります。

とはいえ、Googleや所有する電子書籍で「?.」で検索してもヒットしませんし、演算子の解説ページにも掲載されておらず、コードの意味を正確に理解できていないのではと悩んでおります。
ご存知の方がおられればお教えいただけませんでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

これです。

【Optional chaining - JavaScript | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Optional_chaining

オプショナルチェイニング演算子 ?. は、接続されたオブジェクトチェーンの深くに位置するプロパティの値を、チェーン内の各参照が正しいかどうかを明示的に確認せずに読み込むことを可能にします。 ?. 演算子の機能は . チェーン演算子と似ていますが、参照が nullish (null または undefined) の場合にエラーとなるのではなく、式が短絡され undefined が返されるところが異なります。 関数呼び出しで使用すると、与えられた関数が存在しない場合、 undefined を返します。

これは、参照が失われた可能性のある連結されたプロパティにアクセスする時、結果的に短く単純な式になります。また、必要なプロパティの存在が保証されていない場合にオブジェクトのコンテンツを探索するのにも役立ちます。

投稿2020/08/09 14:34

kei344

総合スコア69606

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

Null合体演算子は後発な最近の文法なので、本などでは紹介されている度合いは少ないと思います。

それにnull合体演算子がなくても記載に全く困らない人も多いでしょうし、

また、私は null と undefined は完全に厳密に区別するタイプの人で、

区別しないと不具合を誘発すると思っているので、それらを区別しない動作になるnull合体演算子などは必要としないので、自分では使わないと思います。

関連する記事を以前書いたことがあります。ご参考程度でどうぞです。

[JavaScript] null と undefined を区別したデフォルト値設定の書き方 - Qiita

投稿2020/08/09 16:02

standard-soft

総合スコア197

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamada2020

2020/08/09 16:39

standard-softさん、ご回答ありがとうございます。 確かにnullとundefinedでは意味が異なりますもんね。 使いどころを間違えないようにする必要がありますね。 このコードは以前いたスタッフが書いたコードなのですが、 それを引き継ぐ私は、standard-softさんに教えていただいたことを踏まえた上で コードを扱おうと思います。 記事のご紹介もありがとうございます。 ぜひ読ませていただきます。
standard-soft

2020/08/09 20:33

Optional chainingと null合体演算子を間違えてしまいました。お恥ずかしい。 オプショナルチェイニングも新しめの文法です。 こちらも新しい文法が用意される前には文字列でオブジェクトのプロパティを存在チェックしつつ値を取得する方法が使われていました。 https://qiita.com/standard-software/items/bb044217d0a4b394b8e2
yamada2020

2020/08/12 16:24

いえいえ、null合体演算子について知識が深まりましたのでとても役立ちました。 > 文字列でオブジェクトのプロパティを存在チェック Qiita拝見しました。 プロパティ値かundefinedのどちらかが返ってくることが保証されるので安心できます。 オプショナルチェイニングでは評価の結果がnullとundefinedのどちらなのかが分からないので 使用する際に注意が必要だと思いました。 もろもろ参考になることを教えていただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問