ホームページ > ウェブフロントエンド > jsチュートリアル > 「未定義のプロパティを読み取れません」エラーを回避するために、JavaScript でネストされたプロパティに安全にアクセスするにはどうすればよいですか?

「未定義のプロパティを読み取れません」エラーを回避するために、JavaScript でネストされたプロパティに安全にアクセスするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-06 22:22:13
オリジナル
726 人が閲覧しました

How Can I Safely Access Nested Properties in JavaScript to Avoid

未定義プロパティ エラーへの対処

JavaScript でネストされたデータ構造を扱う場合、「未定義のプロパティを読み取れません」エラーが発生するとイライラすることがあります。この問題は、未定義または null 値のプロパティにアクセスしようとすると発生します。次の配列を考えてみましょう:

const test = [{'a':{'b':{'c':"foo"}}}, {'a': "bar"}];
ログイン後にコピー

この配列を反復処理してプロパティ c をログに記録しようとすると、次のようになります:

for (i=0; i<test.length; i++) {
    console.log(a.b.c);
}
ログイン後にコピー

では、a.b が含まれる 2 番目のエントリでエラーが発生します。未定義。このエラーを回避するための一般的なアプローチでは、プロパティ チェーンの各レベルをチェックします。

if (a && a.b) {
    console.log(a.b.c);
}
ログイン後にコピー

ただし、深くネストされたデータ構造を扱う場合、これは面倒になる可能性があります。幸いなことに、代替ソリューションがあります。

オプションのチェーン (ES2020 および TypeScript 3.7 )

ECMAScript 2020 以降、または TypeScript バージョン 3.7 に従って JavaScript を使用している場合以上の場合は、オプションのチェーンを利用できます。この演算子 ?. は、エラーをスローすることなく、ネストされたプロパティに安全にアクセスします。

console.log(obj?.a?.lot?.of?.properties);
ログイン後にコピー

ヘルパー関数の回避策 (以前の JavaScript バージョン)

以前のバージョンの JavaScript では、 ES6 アロー関数を使用した try/catch ヘルパー関数が解決策を提供します。

function getSafe(fn, defaultVal) {
  try {
    return fn();
  } catch (e) {
    return defaultVal;
  }
}

console.log(getSafe(() => obj.a.lot.of.properties));
ログイン後にコピー

オプションのデフォルト値を指定することもできます:

console.log(getSafe(() => obj.a.lot.of.properties, 'nothing'));
ログイン後にコピー

以上が「未定義のプロパティを読み取れません」エラーを回避するために、JavaScript でネストされたプロパティに安全にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート