cari
Rumahhujung hadapan webSoal Jawab bahagian hadapanApakah 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.

Apakah perbezaan antara salinan dalam dan salinan cetek dalam javascript

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!

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
Memahami UseState (): Panduan Komprehensif untuk Menegaskan Pengurusan NegeriMemahami UseState (): Panduan Komprehensif untuk Menegaskan Pengurusan NegeriApr 25, 2025 am 12:21 AM

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

Apakah kelebihan menggunakan React?Apakah kelebihan menggunakan React?Apr 25, 2025 am 12:16 AM

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

Debugging dalam React: Mengenal pasti dan menyelesaikan masalah biasaDebugging dalam React: Mengenal pasti dan menyelesaikan masalah biasaApr 25, 2025 am 12:09 AM

TODEBUGREACTAPPLICATIONSEFECTIVELY, USETHESESTRATION

Apakah yang dimaksudkan dengan USESTATE ()?Apakah yang dimaksudkan dengan USESTATE ()?Apr 25, 2025 am 12:08 AM

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

useState () vs usereducer (): memilih cangkuk yang tepat untuk keperluan negara andauseState () vs usereducer (): memilih cangkuk yang tepat untuk keperluan negara andaApr 24, 2025 pm 05:13 PM

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

Menguruskan Negeri dengan UseState (): Tutorial PraktikalMenguruskan Negeri dengan UseState (): Tutorial PraktikalApr 24, 2025 pm 05:05 PM

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,

Bila Menggunakan UseState () dan Bila Mempertimbangkan Penyelesaian Pengurusan Negeri AlternatifBila Menggunakan UseState () dan Bila Mempertimbangkan Penyelesaian Pengurusan Negeri AlternatifApr 24, 2025 pm 04:49 PM

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

Komponen yang boleh diguna semula React: Meningkatkan Pengekalkan dan Kecekapan KodKomponen yang boleh diguna semula React: Meningkatkan Pengekalkan dan Kecekapan KodApr 24, 2025 pm 04:45 PM

ReusablecomponentsinreactenhanceCodeMaintainabilityandficiencybylowingdevelperstousethesamecomponentacrossdifferentpartsofanapplicationorprojects.1) merekaReduceredundancyandsimplifyupdates.2) mereka

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

SecLists

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

Dreamweaver CS6

Alat pembangunan web visual

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)