You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中数组展开赋值与直接赋值的区别是什么?

数组赋值:展开语法 vs 直接赋值的区别

这两种赋值方式完全不同,核心差异在于是否创建新数组:

  • 直接赋值(Line B:const arr2 = arr1;)
    这里并没有生成新数组,arr2只是拿到了arr1指向的数组的内存引用。也就是说,arr1和arr2其实指向同一个数组对象。后续不管修改哪一个变量对应的数组,另一个都会同步变化:

    const arr1 = [1,2,3,4,5];
    const arr2 = arr1;
    arr1.push(6);
    console.log(arr2); // 输出 [1,2,3,4,5,6]
    
  • 展开语法赋值(Line A:const arr2 = [...arr1];)
    这行代码会创建一个全新的数组,并把arr1中的所有元素逐个复制到新数组里。arr1和arr2是两个独立的数组对象,修改其中一个不会影响另一个:

    const arr1 = [1,2,3,4,5];
    const arr2 = [...arr1];
    arr1.push(6);
    console.log(arr2); // 输出 [1,2,3,4,5]
    

注意:展开语法做的是浅拷贝,如果原数组里包含引用类型(比如对象、嵌套数组),那么嵌套的引用依然会共享,修改嵌套内容时两个数组都会受影响,但对于原问题中的基本类型数组,二者就是完全独立的。

内容的提问来源于stack exchange,提问作者Srajal Dwivedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:49:52