Javascript 当a是数组时:t=a和t=[…a]之间的区别是什么?
我试图了解这两种复制数组的方法之间是否有任何区别Javascript 当a是数组时:t=a和t=[…a]之间的区别是什么?,javascript,Javascript,我试图了解这两种复制数组的方法之间是否有任何区别 let a = [1,2,3,4]; t = a; // -> t = [1,2,3,4] t = [...a] // -> t = [1,2,3,4] 第一个,t=a,意味着t引用的数组与a是同一个数组。如果a改变,t也会改变: 设a=[1,2,3,4]; t=a; a、 push10; console.logt 第一个,t=a,意味着t引用的数组与a是同一个数组。如果a改变,t也会改变: 设a=[1,2,3,4]; t
let a = [1,2,3,4];
t = a; // -> t = [1,2,3,4]
t = [...a] // -> t = [1,2,3,4]
第一个,t=a,意味着t引用的数组与a是同一个数组。如果a改变,t也会改变:
设a=[1,2,3,4];
t=a;
a、 push10;
console.logt 第一个,t=a,意味着t引用的数组与a是同一个数组。如果a改变,t也会改变:
设a=[1,2,3,4];
t=a;
a、 push10;
console.logt;
设t=a;//指定对t的引用
第一种方法只是将a的引用赋值给t,这意味着如果更改a或t处的值,将影响a和t,因为它们指向相同的内存位置
设a=[1,2,3,4];
设t=a;
a[0]=120
控制台loga
控制台.logt
设t=a;//指定对t的引用
第一种方法只是将a的引用赋值给t,这意味着如果更改a或t处的值,将影响a和t,因为它们指向相同的内存位置
设a=[1,2,3,4];
设t=a;
a[0]=120
控制台loga
logt主要区别在于当您使用。。。spread运算符,实际上共享数组的浅层副本。这意味着a变为不可变的,并将一个新数组与内存中的新引用指针一起传递给t
当您简单地复制时,即t=a,您在内存中共享一个引用指针。因此,每当您更改t的内容时,它也会自动更新a。主要区别在于当您使用。。。spread运算符,实际上共享数组的浅层副本。这意味着a变为不可变的,并将一个新数组与内存中的新引用指针一起传递给t 当您简单地复制时,即t=a,您在内存中共享一个引用指针。因此,每当您更改t的内容时,它也会自动更新a。提示:其中之一不是复制数组的方法。尝试运行[0]=5;提示:其中一个不是复制数组的方法。尝试运行[0]=5;在每一个版本之后都会发出警报,您将看到不同之处。