Heim  >  Fragen und Antworten  >  Hauptteil

Unterschied zwischen Zuweisung und Entpacken von Arrays

<p>Also ich habe diesen JavaScript-Code, was ist der Unterschied zwischen Zeile A und Zeile B</p> <pre class="brush:php;toolbar:false;">const arr1 = [1,2,3,4,5] const arr2 = [...arr1]; // Zeile A const arr2 = arr1; // Zeile B</pre> <p>Ich möchte also wissen, ob diese beiden Zuweisungsmethoden gleich sind oder ob es einige Unterschiede gibt</p>
P粉287254588P粉287254588434 Tage vor417

Antworte allen(1)Ich werde antworten

  • P粉187160883

    P粉1871608832023-08-14 11:43:19

    它们是不同的。

    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]]
    

    Antwort
    0
  • StornierenAntwort