ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript での「未定義のプロパティを読み取れません」エラーを回避するにはどうすればよいですか?
複雑なデータ構造を扱う場合、未定義のプロパティに関連するエラーが発生するのが一般的です。次の例を考えてみましょう:
// 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 サイトの他の関連記事を参照してください。