Javascript 数组包含通过引用进行的值调用,因此它们的指针应该将相同的值变为true

Javascript 数组包含通过引用进行的值调用,因此它们的指针应该将相同的值变为true,javascript,html,arrays,Javascript,Html,Arrays,据我所知,数组和对象总是充当指针,只指向某个内存位置 在下面的示例中,随着var a的更新,以及指向与a相同的内存位置的b的更新,最终答案应该是true,true 为什么它没有发生在哪个时间点,b得到的指针与a不同,为什么 示例: var a=[2,3,5]; var b=a; a=[33,45]; 控制台日志(a,b); log(a==b,a==b)查看打击: var a = [2,3,5]; var b = a; 在a=[33,45]之后 指针指向新的obj,而不是已更改的obj查

据我所知,
数组
对象
总是充当
指针
,只指向某个内存位置

在下面的示例中,随着
var a
的更新,以及指向与a相同的内存位置的
b
的更新,最终答案应该是true,true

为什么它没有发生在哪个时间点,b得到的指针与a不同,为什么

示例:

var a=[2,3,5];
var b=a;
a=[33,45];
控制台日志(a,b);
log(a==b,a==b)查看打击:

var a = [2,3,5];
var b = a; 

a=[33,45]之后

指针指向新的obj,而不是已更改的obj查看打击:

var a = [2,3,5];
var b = a; 

a=[33,45]之后


指针指向新对象,而不是已更改的对象,因为您没有更新新对象的引用[33,45]

下面的代码可能会帮助您更好地理解

a=[{'a':1},{'b':2}];
b=a;
控制台日志(a,b);
//创建新对象并指定给同一变量
b=b.concat([{'c':3}]);
控制台日志(a,b);
//但对象的属性仍由a和b在中引用
b[0].a=100;
控制台日志(a,b);
a[2].c=100;//引发异常,因为“a”没有对引用在“b”中创建的对象的对象的引用

控制台日志(a,b),因为您没有更新新对象的引用[33,45]

下面的代码可能会帮助您更好地理解

a=[{'a':1},{'b':2}];
b=a;
控制台日志(a,b);
//创建新对象并指定给同一变量
b=b.concat([{'c':3}]);
控制台日志(a,b);
//但对象的属性仍由a和b在中引用
b[0].a=100;
控制台日志(a,b);
a[2].c=100;//引发异常,因为“a”没有对引用在“b”中创建的对象的对象的引用

控制台日志(a,b)a
的值时,
b
将保留旧值。我希望这是一个正确的问题,我不理解。请在投票前解释一下!我不介意投下否决票,但请您在回答中解释一下危险性。当您更改
a
的值时,
b
将保留旧值。