Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengakses Sifat Objek Bersarang dengan Selamat dalam JavaScript dan Mengelakkan Ralat 'Tidak Dapat Membaca Sifat Tidak Ditakrifkan'?
Mengelakkan Ralat 'Tidak Dapat Membaca Sifat Tidak Ditakrifkan' dalam Objek Bersarang
Dalam JavaScript, bekerja dengan objek bersarang boleh menjadi mencabar apabila sesetengah objek mempunyai harta benda yang hilang. Ini membawa kepada ralat masa jalan seperti "tidak dapat membaca sifat yang tidak ditentukan" apabila cuba mengakses sifat yang mungkin tidak wujud.
Salah satu penyelesaian ialah menggunakan pernyataan bersyarat untuk menyemak sama ada sifat wujud sebelum mengaksesnya. Walau bagaimanapun, ini boleh menjadi membosankan untuk objek bersarang dalam. Pendekatan alternatif ialah menggunakan fungsi pembantu dengan try/catch.
function getSafe(fn, defaultVal) { try { return fn(); } catch (e) { return defaultVal; } }
Fungsi ini mengambil dua parameter:
Dengan menggunakan fungsi pembantu ini, anda boleh mengakses sifat bersarang tanpa membuang ralat:
console.log(getSafe(() => obj.a.b.c)); // Logs "foo" or undefined if "c" doesn't exist console.log(getSafe(() => obj.a.b.c, "Not found")); // Logs "Not found" if "c" doesn't exist
Perantaian Pilihan (ES2020 )
Jika menggunakan JavaScript mengikut ECMAScript 2020 atau lebih baru, rantaian pilihan tersedia sebagai penyelesaian yang lebih mudah:
console.log(obj?.a?.b?.c); // Logs "foo" or undefined if any property in the chain is undefined
Perantaian pilihan menyemak setiap sifat dalam rantaian dan mengembalikan tidak ditentukan jika ada yang tidak ditentukan, mengelakkan ralat.
Dalam TypeScript versi 3.7 atau lebih baru, rantaian pilihan juga disokong, menawarkan cara yang mudah untuk mengendalikan objek bersarang tanpa memerlukan fungsi pembantu tersuai atau semakan bersyarat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Sifat Objek Bersarang dengan Selamat dalam JavaScript dan Mengelakkan Ralat 'Tidak Dapat Membaca Sifat Tidak Ditakrifkan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!