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
Lepaskan: 2024-12-05 07:37:09
asal
427 orang telah melayarinya

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;
  }
}
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan