Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当a是数组时:t=a和t=[…a]之间的区别是什么?_Javascript - Fatal编程技术网

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;在每一个版本之后都会发出警报,您将看到不同之处。