Biarkan hasil tuaian kering seketika dahulu:
1.pembolehubah javascript mengandungi dua jenis nilai, satu ialah nilai jenis rujukan dan satu lagi ialah nilai jenis asas. Jenis rujukan termasuk: Tatasusunan, Objek, Fungsi (boleh difahami bahawa jenis bukan asas ialah jenis rujukan);
2. Mekanisme untuk menghantar parameter fungsi adalah untuk menyalin nilai pembolehubah.Buku itu berkata: "Menyalin nilai di luar fungsi ke parameter di dalam fungsi adalah sama seperti menyalin nilai dari satu pembolehubah ke pembolehubah lain. Pemindahan jenis asas adalah sama seperti penyalinan pembolehubah jenis asas, dan pemindahan jenis rujukan Ia adalah sama seperti salinan pembolehubah jenis rujukan "
.
" Apabila pembolehubah menyalin nilai jenis rujukan, salinan nilai yang disimpan dalam objek pembolehubah juga disalin ke ruang yang diperuntukkan untuk pembolehubah baharu. Perbezaannya ialah salinan nilai sebenarnya adalah penunjuk , dan penunjuk ini menunjuk ke objek yang disimpan dalam timbunan Selepas operasi penyalinan selesai, kedua-dua pembolehubah sebenarnya akan merujuk kepada objek yang sama Oleh itu, menukar salah satu pembolehubah akan mempengaruhi pembolehubah yang lain.[Nota: Menyalin nilai jenis rujukan ialah satu-satunya cara untuk menghantar alamat]
3. Parameter sebenarnya adalah pembolehubah setempat bagi fungsi tersebut.
------------------------------------------------ --------------------------
Penjelasan konsep asas:Nilai pindahan: pindahkan nilai A ke B, tukar B, A tidak akan berubah dengan sewajarnya, B menyimpan nilai yang sama dengan A
Alamat pemindahan: pindahkan alamat A ke B, tukar B, dan A akan bertukar pada masa yang sama B hanya menyimpan alamat A (serupa dengan pintasan komputer).
Data dengan jenis nilai disimpan dalam pembolehubah pada tindanan. Iaitu, memperuntukkan ruang memori dalam timbunan dan menyimpan secara langsung nilai yang terkandung, nilai mewakili data itu sendiri. Data jenis nilai mempunyai kelajuan akses yang lebih pantas.
Data dengan jenis rujukan tidak berada pada tindanan, tetapi disimpan dalam timbunan. Iaitu, memperuntukkan ruang memori dalam timbunan tidak secara langsung menyimpan nilai yang terkandung, tetapi menunjuk kepada nilai yang akan disimpan, dan nilainya mewakili alamat yang ditunjuk. Apabila mengakses data dengan jenis rujukan, anda perlu menyemak kandungan pembolehubah pada tindanan, yang merujuk kepada data sebenar dalam timbunan. Data jenis rujukan mempunyai saiz storan yang lebih besar dan kelajuan akses yang lebih rendah daripada data jenis nilai.
------------------------------------------------ --------------------------
Berikut ialah tiga soalan.
[Soalan 1]:
Mengapa bahagian luar tidak terganggu selepas fungsi change(a) dilaksanakan?
<script> var a = [1, 2, 3]; function change(a) { console.log(a);//[1,2,3] a = 2; //传值 console.log(a);//2 } change(a); console.log(a); //[1,2,3] </script>
[Soalan 2]:
Mengapa bahagian luar terganggu selepas fungsi change(a) dilaksanakan?
<script> var a = [1, 2, 3]; function change() { a = 2;//传值 } change(); console.log(a); //2 </script>
Analisis: Perbezaan antara soalan 2 dan soalan 1 ialah soalan 2 tidak memperkenalkan parameter, jadi ia tidak melibatkan penyalinan pembolehubah.
[Soalan 3]:
Mengapa bahagian luar terganggu selepas fungsi change(a) dilaksanakan?
<script> var a = [1, 2, 3]; function change(b) { b[0] = 2; } change(a); console.log(a); //[2,2,3] </script>
Sesungguhnya, apabila fungsi perubahan dilaksanakan, parameter b ialah nilai yang disalin bagi a. Kerana a ialah jenis rujukan, di dalam fungsi, b dan a akses objek alamat melalui rujukan. Kejadian b[0]=2 tidak menjejaskan fakta bahawa b dan a merujuk kepada objek yang sama di dalam fungsi.
[Soalan 4]:
Mengapa bahagian luar tidak terganggu selepas fungsi change(a) dilaksanakan?
var a = [1, 2, 3]; function change(b) { console.log(b);//[1,2,3] b=2; b[0] = 2; } change(a); console.log(a); //[1,2,3]
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.