复制或切片数组与创建一个仅等于现有变量的变量相比,需要什么?

2024-01-01

let a = {"foo": 99};
let b = a;
// console.log(b)  {"foo": 99}

a.foo = 33;
// console.log(b)  {"foo": 33}

我在上面的场景中了解到,如果我使用对象,引用原始对象的变量将反映原始对象的值。

但如果我用数组这样做:

let a = [1,2,3];
let b = a;

a = [99,99,99];
// console.log(b) [1,2,3];

多变的b仍然引用原始值a即使a改变了,那么创建副本的人会通过什么方式slice() serve?


这是因为,通过这样做a = [99, 99, 99],您正在创建一个全新的对象,并“重置”a。但是做的时候a.foo = 33,您正在修改现有对象及其引用。

你可以看到当我设置a[0]代替a, b仍然等于a:

let a = [1, 2, 3];
let b = a;

a[0] = [99, 99, 99];
console.log(b);

当使用slice()方法,b保留a的原始值。

Example:

let a = [1, 2, 3];
let b = a;

a = a.slice(2);
console.log(a, b);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复制或切片数组与创建一个仅等于现有变量的变量相比,需要什么? 的相关文章

随机推荐