Perbezaan antara peruntukan dan membongkar tatasusunan
P粉287254588
P粉287254588 2023-08-13 16:31:45
0
1
483
<p>Jadi saya mempunyai kod JavaScript ini, apakah perbezaan antara Talian A dan Talian B</p> <pre class="brush:php;toolbar:false;">const arr1 = [1,2,3,4,5] const arr2 = [...arr1]; // Baris A const arr2 = arr1; // Baris B</pre> <p>Jadi saya ingin tahu sama ada kedua-dua kaedah tugasan ini adalah sama atau terdapat beberapa perbezaan</p>
P粉287254588
P粉287254588

membalas semua(1)
P粉187160883

Mereka berbeza.

const arr2 = [...arr1]; // Line A

LINE A, salin (salinan cetek) setiap elemen tatasusunan ke dalam arr2.

const arr2 = arr1;      // Line B

LINE B, tetapkan rujukan arr1 kepada arr1的引用赋值给arr2。基本上,arr1arr2. Pada asasnya, arr1 dan

ialah tatasusunan yang sama.

Contoh

const arr = [1, 2, 3];

const arrA = [...arr];
const arrB = arr;

console.log(arr === arrA); // False
console.log(arr === arrB); // True

arrA[0] = 9;
console.log(arr[0] === arrA[0]); // False
console.log(arr); // [1,2,3]
console.log(arrA); // [9,2,3]

arrB[0] = 9;
console.log(arr[0] === arrB[0]); // True
console.log(arr); // [9,2,3]
console.log(arrB); // [9,2,3]

Salinan cetek

Salinan cetek hanya menyalin item peringkat pertama. Sebagai contoh, jika tatasusunan mengandungi tatasusunan lain, tatasusunan dalam akan disalin, tetapi unsur tatasusunan dalam tidak disalin. Oleh itu, elemen dalam tidak disalin. Lihat contoh kod di bawah: 🎜
const arr = [1, 2, [5, 6]];

const arrA = [...arr];
const arrB = arr;

console.log(arr === arrA); // False
console.log(arr === arrB); // True

arrA[0] = 8;
arrA[2][0] = 9;
console.log(arr[2][0] === arrA[2][0]); // True
console.log(arr); // [1, 2, [9, 6]]
console.log(arrA); // [8, 2, [9, 6]]

arrB[0] = 8;
arrB[2][0] = 9;
console.log(arr[2][0] === arrB[2][0]); // True
console.log(arr); // [8, 2, [9, 6]]
console.log(arrB); // [8, 2, [9, 6]]
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan