Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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中的变量杂耍_Javascript_Variables - Fatal编程技术网

javascript中的变量杂耍

javascript中的变量杂耍,javascript,variables,Javascript,Variables,为什么在c[2]=b[0]的情况下,a[2]的值也会改变 据我所知,var c=a应该只将a[]中的任何值赋给c[],而不是相反 JavaScript中的基本规则是:原语类型由值操作,引用类型(顾名思义)由引用操作 数字和布尔值是JavaScript中的基本类型——基本类型,因为它们只包含少量固定的字节,这些字节在JavaScript解释器的低级(基本)级别上非常容易操作 另一方面,对象和数组是引用类型。这些数据类型可以包含任意数量的属性或元素,因此可以具有任意大小,并且不能如此轻松地进行操作

为什么在c[2]=b[0]的情况下,a[2]的值也会改变

据我所知,
var c=a
应该只将
a[]
中的任何值赋给
c[]
,而不是相反

JavaScript中的基本规则是:原语类型由值操作,引用类型(顾名思义)由引用操作

数字和布尔值是JavaScript中的基本类型——基本类型,因为它们只包含少量固定的字节,这些字节在JavaScript解释器的低级(基本)级别上非常容易操作

另一方面,对象和数组是引用类型。这些数据类型可以包含任意数量的属性或元素,因此可以具有任意大小,并且不能如此轻松地进行操作

由于对象和数组值可能会变得相当大,因此按值操作这些类型是没有意义的,这可能会涉及大量内存的低效复制和比较


欲了解更多信息:-

变量
c
a
指向内存中的相同值,因此
c
上的每次更改都将修改
a
。这是
可变性。正如@Ele所说。因此,您需要创建一个新的值实例,例如es6。c=[…a]尝试使用:
c=a.slice(0)
这允许您深度复制数组,因此在修改c时不会修改a。@connexo副本仍然有用,因为最终引用可能过于笼统,而中间副本为将一般答案转换为特定答案提供了有价值的上下文。
var a = [1,2,3]
var b = [4,5,6]
var c = a;