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!