數組的分配和解包之間的區別
P粉287254588
P粉287254588 2023-08-13 16:31:45
0
1
418
<p>所以我有這段JavaScript程式碼,Line A和Line B有什麼差別</p> <pre class="brush:php;toolbar:false;">const arr1 = [1,2,3,4,5] const arr2 = [...arr1]; // Line A const arr2 = arr1; // Line B</pre> <p>所以我想知道這兩種賦值方式是相同的還是有一些區別</p>
P粉287254588
P粉287254588

全部回覆(1)
P粉187160883

它們是不同的。

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

LINE A,將陣列的每個元素複製(淺複製)到arr2中。

const arr2 = arr1;      // Line B

LINE B,將arr1的引用賦值給arr2。基本上,arr1arr2是同一個陣列。

範例

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]

淺複製

淺複製只複製第一層項目。例如,如果數組包含另一個數組,則內部數組會被複製,但不會複製內部數組的元素。因此,深層元素不會被複製。請參閱下面的程式碼範例:

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]]
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!