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'?

Bagaimanakah Saya Boleh Mengakses Sifat Objek Bersarang dengan Selamat dalam JavaScript dan Mengelakkan Ralat 'Tidak Dapat Membaca Sifat Tidak Ditakrifkan'?

Patricia Arquette
Patricia Arquetteasal
2024-12-05 07:37:09425semak imbas

How Can I Safely Access Nested Object Properties in JavaScript and Avoid

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:

  • fn: Fungsi yang mendapatkan semula nilai harta.
  • defaultVal: Nilai lalai pilihan untuk dikembalikan jika harta itu tidak ditentukan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn