はじめに
JavaScriptでメソッドチェーンを書いた際にundefinedを参照しエラーになることがあるので、JavaのOptionalのorElseの挙動を実装。
const hoge = undefined;
// "errorType": "TypeError",
// "errorMessage": "Cannot read property 'fuga' of undefined"
// エラーになる
const fuga = hoge.fuga.fuga;
コード
const hoge = undefined;
// undefinedだった場合、空文字が入る。
const fuga = hoge?.fuga?.fuga || '';
|| は前の式がfalse(undefined)だった場合、後ろの値が代入されます。
?.という書き方はオプショナルチェイニングというものです。
オプショナルチェイニングoptional chaining演算子 ?. は、接続されたオブジェクトチェーンの深くに位置するプロパティの値を、チェーン内の各参照が正しいかどうかを明示的に確認せずに読み込むことを可能にします。 ?. 演算子の機能は . チェーン演算子と似ていますが、参照が nullish (null または undefined) の場合にエラーとなるのではなく、式が短絡され undefined が返されるところが異なります。 関数呼び出しで使用すると、与えられた関数が存在しない場合、 undefined を返します。
おわりに
JavaScriptでメソッドチェーンで書いた際にundefined参照で落ちるということがなくなり、デフォルト値を返却できるようになります。
参考