javascript - 数组包含通过引用调用的值,因此它们的指针应该变成相同的值并等于 true

标签 javascript html arrays

据我所知,arraysobjects始终充当 pointers只需指向某个内存位置即可。

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

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

示例:

var a = [2,3,5];
var b = a; 
a = [33,45];
console.log(a,b);
console.log(a==b,a===b);

但是,为了支持我的条款,请查看以下未更改值的示例。这里我确信 a 和 b 都指向包含 [2,3,5] 数据的相同内存位置。它们具有相同的值并且始终等同于 true。

var a = [2,3,5];
var b = a; 
console.log(a==b,a===b);

最佳答案

因为您没有更新新对象的引用 [33, 45]。

以下代码可能会帮助您更好地理解。

a = [{'a': 1}, {'b': 2}];
b = a;
console.log(a, b);

// creates new object and assigns to the same variable
b = b.concat ([{'c': 3}]);
console.log(a, b);

// but property of object is still referenced in by a and b
b[0].a = 100;
console.log(a,b);

a[2].c = 100; // throws exception, because 'a' does not have the reference to object which refers the object created in 'b'
console.log(a,b);

关于javascript - 数组包含通过引用调用的值,因此它们的指针应该变成相同的值并等于 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57287280/

相关文章:

javascript - php json_decode 到数组中

javascript - 在 Div 内显示 JavaScript 数组元素

javascript - 用jquery替换和恢复div html

javascript - 带有backbone.js的模板

jquery - 页脚滚动顶部的“返回顶部”

java - 将元素输入数组

javascript - 为什么 ES6 Symbol 属性可以被 Object.defineProperty 枚举?

javascript - 这个 JS 模式的目的是什么?

html - 文本输入的较大默认宽​​度会阻止表格适应最小的单元格

javascript - 单击时显示绑定(bind)在输入框下方的复选框