Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengelakkan Ralat 'Tidak Dapat Membaca Harta Yang Tidak Ditakrifkan' dalam JavaScript?
Apabila bekerja dengan struktur data yang kompleks, ralat yang berkaitan dengan sifat yang tidak ditentukan adalah perkara biasa. Pertimbangkan contoh berikut:
// This array contains a mix of nested objects and non-nested values var test = [{'a':{'b':{'c':"foo"}}}, {'a': "bar"}];
Lelaran melalui ujian boleh membawa kepada ralat apabila mengakses sifat objek bersarang yang mungkin tidak wujud. Sebagai contoh, kod berikut menimbulkan ralat semasa mengakses a.b.c:
for (i=0; i<test.length; i++) { console.log(a.b.c); // Throws error on i==1 }
Untuk mengelakkan ralat tersebut, beberapa pendekatan boleh digunakan:
Perantaian Pilihan (ES2020 ) dan TypeScript 3.7
Kemas kini: Untuk moden pelayar dan TypeScript, penyelesaian yang disyorkan ialah operator rantaian pilihan (?.):
obj?.a?.lot?.of?.properties
Penyelesaian Berasaskan Fungsi (Pra-ES2020 dan Pra-TypeScript 3.7)
Penyelesaian mudah ialah menggunakan fungsi pembantu:
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));
Fungsi ini mengembalikan hasil panggilan fungsi yang disediakan, atau nilai lalai jika ralat berlaku. Menggunakan pendekatan ini, anda boleh mengelakkan ralat dan mengakses sifat bersarang secara bersyarat:
console.log(getSafe(() => obj.a.lot.of.properties, 'nothing'));
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelakkan Ralat 'Tidak Dapat Membaca Harta Yang Tidak Ditakrifkan' dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!