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

JavaScript での「未定義のプロパティを読み取れません」エラーを回避するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-23 01:26:091031ブラウズ

How Can I Avoid

「未定義のプロパティを読み取れません」エラーの回避

複雑なデータ構造を扱う場合、未定義のプロパティに関連するエラーが発生するのが一般的です。次の例を考えてみましょう:

// This array contains a mix of nested objects and non-nested values
var test = [{'a':{'b':{'c':"foo"}}}, {'a': "bar"}];

テストを反復すると、存在しない可能性のあるネストされたオブジェクトのプロパティにアクセスするときにエラーが発生する可能性があります。たとえば、次のコードは a.b.c にアクセスするときにエラーをスローします:

for (i=0; i<test.length; i++) {
    console.log(a.b.c); // Throws error on i==1
}

このようなエラーを回避するには、いくつかのアプローチを使用できます:

Optional Chaining (ES2020 ) および TypeScript 3.7

更新:最新のブラウザーと TypeScript の場合、推奨される解決策はオプションのチェーン (?.) 演算子です:

obj?.a?.lot?.of?.properties

関数ベースの回避策 (ES2020 より前および TypeScript 3.7 より前)

簡単な回避策は、ヘルパー関数を使用することです:

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

// Use the function to access the property safely
console.log(getSafe(() => obj.a.lot.of.properties));

この関数提供された関数を呼び出した結果、またはエラーが発生した場合はデフォルト値を返します。このアプローチを使用すると、エラーを回避し、ネストされたプロパティに条件付きでアクセスできます:

console.log(getSafe(() => obj.a.lot.of.properties, 'nothing'));

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。