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
将保留旧值。