⛓
プロパティアクセスに便利なオプショナルチェイニング
オプショナルチェイニングとは
オプショナルチェイニング(Optional chaining)演算子?.
は、プロパティアクセスの.
の代わりに使用できます。プロパティアクセス先がnullishな値(null
またはundefined
)の場合でもエラーにならず、undefined
を返すのが特徴です。
例えばhoge?.fuga
とした場合、hoge
がnullishな値であればundefined
が返され、そうでなければhoge.fuga
となります。hoge ? hoge.fuga : undefined
と同義ですね。
なぜオプショナルチェイニングが必要か
JavaScriptでは、プロパティアクセス先がnullishな値のとき、エラーとなります。
const hoge = document.getElementById('hoge');
hoge.classlist.add('fuga'); // hogeがnullのとき、classlistプロパティでエラーとなる
つまり、hoge
という要素ノードがnull
の場合でもエラーにならないようなフェイルセーフ(hoge
の存在チェック)が必要になります。こちらの対策を2つ紹介します。
対策①:早期リターン
一番オーソドックス?な方法です。
const hoge = document.getElementById('hoge');
if (!hoge) return; // hogeがnullishな値であればreturn
hoge.classlist.add('fuga'); // hogeがnullishな値でないことが保証されている
対策②:オプショナルチェイニング
本命。早期リターンに比べてコードが少なくなります。
const hoge = document.getElementById('hoge');
hoge?.classlist.add('fuga'); // hogeがnullishな値であれば`undefined`が返されるので、classlistプロパティでエラーとならない
まとめ
- プロパティアクセスにはフェイルセーフが必要。
- 早期リターンorオプショナルチェイニングで対策しましょう。
- オプショナルチェイニングのほうがコードが少なくて済むのでオススメ。
Discussion