Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Mengelakkan Ralat 'Tidak Dapat Membaca Harta Yang Tidak Ditakrifkan' dalam JavaScript?

Bagaimanakah Saya Boleh Mengelakkan Ralat 'Tidak Dapat Membaca Harta Yang Tidak Ditakrifkan' dalam JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-12-23 01:26:09
asal
1040 orang telah melayarinya

How Can I Avoid

Mengelakkan Ralat 'Tidak Dapat Membaca Sifat Tidak Ditakrifkan'

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

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

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

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

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

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!

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