gpt4 book ai didi

javascript - 复制或切片数组与创建与现有变量相等的变量有什么需要?

转载 作者:行者123 更新时间:2023-12-03 06:58:06 26 4
gpt4 key购买 nike

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

a.foo = 33;
// console.log(b) {"foo": 33}
我在上面的场景中了解到,如果我使用对象,引用原始对象的变量将反射(reflect)原始对象的值。
但是如果我用数组这样做:
let a = [1,2,3];
let b = a;

a = [99,99,99];
// console.log(b) [1,2,3];
变量 b仍然引用 a 的原始值即使在 a 之后改变了,那么通过 slice() 创建副本的人会怎样?服务?

最佳答案

这是因为,通过执行 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的原始值。
例子:

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

a = a.slice(2);
console.log(a, b);

关于javascript - 复制或切片数组与创建与现有变量相等的变量有什么需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64158150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com