JavaScript让一个变量影响另一个变量内容

2020-11-03 17:38发布

问题:

let a=[1,2,3];
let b = a;
b = [];
console.log(a); // 输出为 [1,2,3]

在这里我想让a成为现在b的值, 就是清空, 请问有什么方法可以, 可以将变量b指向a相同的一个内存空间

回答1:

let a=[1,2,3];
let b = a;
b.length = 0; // 清空 - 并不修改引用
console.log(a); // 输出为 []


回答2:

如果你想通过b操作a,有一个前提,就是操作b的引用。
楼上的b.length=0,是正确用法。

let a=[1,2,3]的意思是:创建一个数组[1,2,3],然后把这个数组的引用 赋值给 a。
let b=a 的意思是:把a的值,即[1,2,3]的引用,赋值给b。
b=[] 的意思是:创建一个空数组[],把空数组[]的引用 赋值给b。

所以你可以发现,b=[]之后,a和b的值,是不同数组的引用。你操作b自然没有效果。

而b.length=0 意思是,将 b的值中一个属性length设置为0,即 数组[1,2,3]的属性length设置为0,就可以清空[1,2,3]。
此时a和b的值,为同一个数组。

这里面的关键是,你要理解,代码中的a,b其实就是储存变量用的。



标签: javascript