Rumah  >  Artikel  >  hujung hadapan web  >  laporan ralat baocun javascript

laporan ralat baocun javascript

WBOY
WBOYasal
2023-05-17 16:26:08465semak imbas

Pembangunan bahagian hadapan JavaScript adalah bidang yang sangat popular pada masa ini Dalam bidang ini, pemprosesan data dan penyimpanan data adalah bahagian yang sangat penting Dalam proses penyimpanan data, pelbagai masalah ralat sering berlaku, antaranya yang paling biasa ralat yang berlaku apabila JavaScript menyimpan data Mari kita menganalisis ralat dan penyelesaian yang berlaku apabila JavaScript menyimpan data.

1. Ralat data storan JavaScript biasa

  1. Apabila menggunakan localStorage untuk storan data, jika kita menyimpan objek secara langsung di dalamnya dan bukannya menukarnya menjadi rentetan JSON dan kemudian menyimpannya, Ralat akan muncul dan mesej ralat ialah: Klon data gagal kerana item yang disimpan mempunyai sifat yang tidak boleh diklon.
  2. Apabila menggunakan sessionStorage untuk storan data, jika kita menyimpan objek rujukan kitaran terus di dalamnya, ralat juga akan muncul: Mesej kitaran data tidak boleh dikekalkan dalam storan.

2 Penyelesaian

  1. Tukar objek kepada rentetan JSON dan kemudian simpannya. Kaedah JSON.stringify() boleh menukar objek kepada rentetan JSON dan kaedah JSON.parse() boleh menukar rentetan JSON kepada objek.
  2. Selesaikan masalah rujukan pekeliling. Rujukan bulat merujuk kepada situasi di mana objek merujuk antara satu sama lain, membentuk gelung tertutup. Apabila berurusan dengan rujukan bulat, kita boleh menggunakan perpustakaan pengesanan rujukan bulat Contohnya, perpustakaan fast-json-patch menyediakan fungsi pengesanan rujukan bulat.

3. Contoh analisis

Mari kita gunakan beberapa contoh untuk menggambarkan ralat dan penyelesaian yang berlaku apabila JavaScript menyimpan data.

  1. Mesej ralat

Apabila kami menggunakan localStorage untuk menyimpan objek, jika ia tidak ditukar kepada rentetan JSON dan kemudian disimpan, mesej ralat berikut akan muncul:

Klon data gagal kerana item yang disimpan mempunyai sifat yang tidak boleh diklon.

  1. Penyelesaian

Tukar objek kepada rentetan JSON dan kemudian simpan itu Itu sahaja:

let obj = {name: 'Tom', age: 18};
// Tukar objek kepada rentetan JSON
let str = JSON.stringify(obj);
// Simpan rentetan JSON
localStorage.setItem('user', str);

  1. Mesej ralat

Apabila kami menggunakan sessionStorage untuk menyimpan pekeliling objek rujukan, mesej ralat berikut akan muncul:

Struktur kitaran data tidak boleh dikekalkan dalam storan.

  1. Penyelesaian

Selesaikan masalah rujukan pekeliling, anda boleh menggunakan fungsi pengesanan rujukan bulat yang disediakan oleh pustaka fast-json-patch Kodnya adalah seperti berikut:

const jsonPatch = require('fast-json-patch')
const obj = { name. : 'Tom ', rakan: [] }
obj.friends.push(obj)

const valid = jsonPatch.validate(obj)
if (valid === undefined) {
console. log('Objek itu sah')
sessionStorage.setItem('user', JSON.stringify(obj))
} else {
console.log('Objek mempunyai rujukan bulat ')
}

Ringkasan

Ia adalah masalah yang sangat biasa bagi JavaScript untuk mendapatkan ralat semasa menyimpan data. Mesej ralat ini mengingatkan kami tentang beberapa had dan ralat yang berlaku apabila kami menyimpan data , dan kita perlu melakukan beberapa perkara khas semasa menyimpan data. Sebagai contoh, kita perlu menggunakan kaedah JSON.stringify() untuk menukar objek kepada rentetan JSON sebelum menyimpannya, dan kita juga perlu menggunakan perpustakaan pengesanan rujukan bulat untuk menyelesaikan masalah rujukan bulat. Hanya melalui pembelajaran dan amalan kita boleh menguasai pengetahuan dan kemahiran yang berkaitan dengan penyimpanan data JavaScript dengan lebih baik.

Atas ialah kandungan terperinci laporan ralat baocun javascript. 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