Rumah >hujung hadapan web >tutorial js >Mengapa Adakah `console.log()` Menunjukkan Perubahan Susunan Segera dalam JavaScript?

Mengapa Adakah `console.log()` Menunjukkan Perubahan Susunan Segera dalam JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-13 01:15:10401semak imbas

Why Does `console.log()` Show Immediate Array Changes in JavaScript?

console.log() Menggemakan Perubahan dalam Rujukan Tatasusunan Serta-merta

Dalam JavaScript, pembolehubah yang memegang nilai primitif seperti nombor dan rentetan dihantar mengikut nilai , manakala yang mengandungi objek diluluskan melalui rujukan. Perbezaan ini menjadi jelas apabila memanipulasi tatasusunan.

Pertimbangkan kod berikut:

var A = [2, 1];
var C = A;

console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]

Dalam contoh ini, C diberikan rujukan kepada tatasusunan A. Apabila A diisih, perubahannya adalah serta-merta dipantulkan dalam C, walaupun sebelum A diakses semula.

Mengapa ini berlaku? Tidak seperti nilai primitif, objek diperuntukkan timbunan, bermakna ia berada dalam memori komputer dan diakses melalui rujukan. Apabila kita log C, console.log() mencetak rujukan kepada tatasusunan dan bukan salinan kandungannya. Oleh itu, sebarang pengubahsuaian seterusnya kepada objek yang dirujuk (dalam kes ini, menyusun tatasusunan) juga akan dilihat dalam konsol sebelum A digunakan semula.

Untuk mengelakkan tingkah laku ini dan log syot kilat objek di instant console.log() dipanggil, anda boleh menggunakan helah berikut:

console.log(JSON.parse(JSON.stringify(C)));

Teknik ini mencipta salinan dalam objek menggunakan pensirian JSON dan penyahserikatan.

Atas ialah kandungan terperinci Mengapa Adakah `console.log()` Menunjukkan Perubahan Susunan Segera 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