【JavaScript】「Cannot read properties of null」エラーの解決策

JavaScriptを書いていると、「Cannot read properties of null」などのエラーに出会うことがあります。この記事では、そのエラーが何なのか、なぜ発生するのか、そしてどのように対処すればよいのかを詳しく説明します。

エラーの原因を特定する

最初に行うべきは、エラーの原因を特定することです。エラーメッセージに記載されている行番号を確認し、どのコード行で問題が発生しているのかを明確にしましょう。

オブジェクトがnullまたはundefinedかどうかをチェックする

エラーが発生する直前で、オブジェクトがnullまたはundefinedでないことを確認します。これにより、プログラムがエラーの状態を安全に処理できるようになります。

if (object !== null && object !== undefined) {
    // objectのプロパティに安全にアクセスできる
    console.log(object.property);
}

オプショナル・チェイニング(Optional Chaining)を使用する

ES2020から導入されたオプショナル・チェイニングを使用すると、nullまたはundefinedでない場合にのみプロパティにアクセスします。これは非常に便利な機能で、コードを大幅に簡潔にすることができます。

console.log(object?.property);

デフォルト値を設定する(Nullish Coalescing)

オブジェクトがnullまたはundefinedの場合にデフォルト値を設定することができます。これにはES2020のNullish Coalescing演算子??を使用します。これにより、デフォルト値を効果的に設定することができます。

console.log(object?.property ?? 'Default Value');

オブジェクトを初期化する

オブジェクトがnullまたはundefinedになる原因を特定し、それが起きないようにオブジェクトを適切に初期化します。これは基本的ながら非常に重要なステップです。

let object = getObjectFromSomewhere(); // この関数からの戻り値がnullの可能性がある
if (!object) {
    object = {}; // オブジェクトを初期化する
}
console.log(object.property);

エラーハンドリングを行う

最後に、try…catchブロックを使って、エラーをキャッチし、エラーハンドリングを行うことも一つの選択肢です。これにより、エラーが発生した場合にもコントロールを保ち、プログラムがクラッシュするのを防げます。

try {
    console.log(object.property);
} catch (error) {
    console.error('An error occurred:', error);
}

まとめ

「Cannot read properties of null」エラーは、初めて見ると少し厄介に感じるかもしれませんが、実際にはシンプルな問題です。このエラーは、オブジェクトがnullまたはundefinedの状態でプロパティにアクセスしようとしたときに発生します。エラーの原因を特定し、適切に対処することで、安定したコードを書くための大きな一歩を踏み出すことができます。