


Apakah perbezaan antara salinan dalam dan salinan cetek dalam javascript
Dalam JavaScript, salinan cetek hanya menyalin alamat memori data asal, yang bersamaan dengan dua penunjuk data yang menunjuk ke alamat yang sama Jika mana-mana satu elemen data berubah, ia akan menjejaskan yang lain; dua elemen data salinan dalam Data menghala ke alamat yang berbeza, dan perubahan kepada mana-mana satu elemen tidak akan menjejaskan yang lain.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi JavaScript 1.8.5, komputer Dell G3.
Apakah perbezaan antara salinan dalam dan salinan cetek dalam JavaScript
Sebelum meneroka salinan cetek dan salinan dalam, mari kita fahami konsep timbunan dan timbunan
Timbunan dan timbunan Ia adalah kawasan yang dibahagikan kepada memori untuk penyimpanan. Timbunan diperuntukkan ruang memori secara automatik, yang dikeluarkan secara automatik oleh sistem; timbunan diperuntukkan memori secara dinamik, dan saiznya berubah-ubah dan tidak akan dikeluarkan secara automatik.
Kemudian lihat jenis data asas & jenis data rujukan (juga dikenali sebagai jenis data kompleks)
1 Jenis asas: String, Number, Boolean, null, undefined, Symbol (. baru dalam ES6, mewakili nilai unik); nilai jenis asas menduduki saiz tetap dalam ingatan dan disimpan dalam memori tindanan.
2. Jenis rujukan: Objek, Tatasusunan, Tarikh, Fungsi, dll.;
Konsep salinan dalam dan cetek
Nota: Perbezaan antara salinan dalam dan cetek hanya terpakai kepada objek kompleks seperti Array dan Objek.
1. Salinan cetek: Ia hanya menyalin alamat memori data asal, yang bersamaan dengan dua penunjuk data yang menunjuk ke alamat yang sama.
2. Salinan dalam: Kedua-dua data menghala ke alamat yang berbeza, dan elemen data tidak akan menjejaskan satu sama lain apabila ia berubah.
Contoh kajian
1 Salinan cetek
var arr = [0, 1, 2]; var arrB; //把arr赋值给arrB arrB = arr; console.log("arr:", arr); console.log("arrB:", arrB); console.log("-----------改变arrB中数组元素的值后-----------"); arrB[0] = 5; console.log("arr:", arr); console.log("arrB:", arrB);
Hasil operasi: elemen tatasusunan arr berubah apabila elemen tatasusunan arrB berubah
2 (hanya salinan dalam peringkat pertama)
Nota: Apabila menggunakan salinan dalam, anda mesti menjelaskan keperluan untuk salinan dalam, iaitu menyalin dalam hanya atribut objek atau elemen tatasusunan secara rekursif tahap sifat objek dan elemen tatasusunan?
Tatasusunan salinan dalam
① Merentasi terus
var arr = [1, 2, 3, 4]; function copy(arr){ var newArr = []; for(var i=0;i<arr.length;i++){ newArr.push(arr[i]); } return newArr; } var arrB = copy(arr); console.log("arrB:", arrB); console.log("-----------改变arrB中数组元素的值后-----------"); arrB[0] = 5; console.log("arr:", arr); console.log("arrB:", arrB);
Hasil operasi: Perubahan elemen tatasusunan arrB tidak menjejaskan nilai elemen tatasusunan arr
② . concat(): digunakan untuk menyambung dua atau lebih tatasusunan. Kaedah ini tidak mengubah suai tatasusunan sedia ada, ia hanya mengembalikan salinan tatasusunan bercantum.
var arr = [0, 1, 2]; var arrB; //把arr赋值给arrB arrB = arr.concat(); console.log("arr:", arr); console.log("arrB:", arrB); console.log("-----------改变arrB中数组元素的值后-----------"); arrB[0] = 5; console.log("arr:", arr); console.log("arrB:", arrB);
Hasil operasi: elemen tatasusunan arr tidak berubah dengan perubahan dalam elemen tatasusunan arrB
③ slice(): Kaedah ini mengembalikan serpihan elemen yang dipintas daripada Borang tatasusunan sedia ada tatasusunan baru (jangan tukar tatasusunan asal).
var arr = [0, 1, 2, 4, 5]; var arrB; //把arr赋值给arrB arrB = arr.slice(); console.log("arr:", arr); console.log("arrB:", arrB); console.log("-----------改变arrB中数组元素的值后-----------"); arrB[0] = 10; arr[4] = 8; console.log("arr:", arr); console.log("arrB:", arrB);
Hasil operasi: Perubahan dalam elemen dalam tatasusunan tidak akan menjejaskan satu sama lain
Tiga kaedah di atas hanya untuk tatasusunan mudah yang elemen tatasusunannya ialah jenis data asas. elemen tatasusunan peringkat Untuk tatasusunan pembolehubah jenis rujukan seperti objek atau tatasusunan, kaedah di atas akan gagal.
Cadangan berkaitan: Tutorial pembelajaran javascript
Atas ialah kandungan terperinci Apakah perbezaan antara salinan dalam dan salinan cetek dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

useState () isareacthookusedtomanagestateinfunctionalcomponents.1) itinitializesandupdatesstate, 2) harusbecalledatthetoplevelofcomponents, 3) canleadto'stalestate'ifnotusedCorrecly, dan4)

Reactispopularduetoitscomponent-berasaskan-berasaskan, virtualdom, richecosystem, anddeclarativenature.1) komponen-berasaskan komponen yang tidak dapat dipisahkan.

TODEBUGREACTAPPLICATIONSEFECTIVELY, USETHESESTRATION

useState () inreactallowsstatemanagementInfunctionalcomponents.1) itimplifiesstatemanagement, makeCodeMoreconcise.2) usetheprevcountfunctionToupdatestateBasedonitsPreviousValue, elesteringStalestateSsues.3)

PILISEUSESTATE () Forsimple, IndependentStateVariables; useUsereducer () forComplexStateLogicorWhenStededededSonPreviousState.1) useState () isIdealForsimpleupdatesliketogglingabooleanorupdatingAcounter.2)

UseState lebih tinggi daripada komponen kelas dan penyelesaian pengurusan negeri yang lain kerana ia memudahkan pengurusan negeri, menjadikan kod lebih jelas, lebih mudah dibaca, dan selaras dengan sifat deklaratif React. 1) UseState membolehkan pemboleh ubah negeri diisytiharkan secara langsung dalam komponen fungsi, 2) ia mengingati negara semasa membuat semula melalui mekanisme cangkuk, 3) menggunakan useState untuk menggunakan pengoptimuman reaksi seperti menghafal untuk meningkatkan prestasi,

UseUsestate () forlocalComponentStatemanagement; pertimbangan yang tidak dapat dipertahankan, kompleksLogic, orperformanceissues.1) useState () isidealforsimple, localstate.2) useglobalStatesolutionsLikereduxorcontextForShorSharsharedState.3)

ReusablecomponentsinreactenhanceCodeMaintainabilityandficiencybylowingdevelperstousethesamecomponentacrossdifferentpartsofanapplicationorprojects.1) merekaReduceredundancyandsimplifyupdates.2) mereka


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Dreamweaver CS6
Alat pembangunan web visual

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
