Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Mengakses Hartanah Bersarang dengan Selamat dalam JavaScript untuk Mengelakkan Ralat 'Tidak Dapat Membaca Sifat Tidak Ditakrifkan'?

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

Mary-Kate Olsen
Lepaskan: 2024-12-06 22:22:13
asal
726 orang telah melayarinya

How Can I Safely Access Nested Properties in JavaScript to Avoid

Mengatasi Ralat Harta Yang Tidak Ditakrifkan

Apabila berurusan dengan struktur data bersarang dalam JavaScript, menghadapi ralat "tidak dapat membaca sifat yang tidak ditentukan" boleh mengecewakan. Ia berlaku apabila percubaan dibuat untuk mengakses sifat nilai yang tidak ditentukan atau batal. Pertimbangkan tatasusunan berikut:

const test = [{'a':{'b':{'c':"foo"}}}, {'a': "bar"}];
Salin selepas log masuk

Lelaran melalui tatasusunan ini dan cuba log sifat c, seperti:

for (i=0; i<test.length; i++) {
    console.log(a.b.c);
}
Salin selepas log masuk

akan mengakibatkan ralat pada entri kedua di mana a.b adalah tidak ditentukan. Untuk mengelakkan ralat ini, pendekatan biasa melibatkan pemeriksaan setiap peringkat rantaian harta benda:

if (a && a.b) {
    console.log(a.b.c);
}
Salin selepas log masuk

Walau bagaimanapun, ini boleh menjadi membosankan apabila berurusan dengan struktur data bersarang dalam. Nasib baik, terdapat penyelesaian alternatif.

Perantaian Pilihan (ES2020 dan TypeScript 3.7 )

Jika anda menggunakan JavaScript mengikut ECMAScript 2020 atau lebih baharu, atau TypeScript versi 3.7 atau lebih tinggi, anda boleh memanfaatkan rantaian pilihan. Pengendali ini, ?., mengakses sifat bersarang dengan selamat tanpa membuang ralat.

console.log(obj?.a?.lot?.of?.properties);
Salin selepas log masuk

Penyelesaian Fungsi Pembantu (Versi JavaScript Terdahulu)

Untuk versi JavaScript yang lebih awal, a cuba/tangkap fungsi pembantu dengan fungsi anak panah ES6 boleh menyediakan a penyelesaian.

function getSafe(fn, defaultVal) {
  try {
    return fn();
  } catch (e) {
    return defaultVal;
  }
}

console.log(getSafe(() => obj.a.lot.of.properties));
Salin selepas log masuk

Anda juga boleh memberikan nilai lalai pilihan:

console.log(getSafe(() => obj.a.lot.of.properties, 'nothing'));
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Hartanah Bersarang dengan Selamat dalam JavaScript untuk 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