const a =[1,2,3];
const b =a[1];
a.length =0;
console.log(a)
console.log(b)
chrome 控制台输出
问题:
arr.length=0 不就是清空数组的操作吗?
为什么会出现这样的情况呢?
const a =[1,2,3];
const b =a[1];
a.length =0;
console.log(a)
console.log(b)
chrome 控制台输出
问题:
arr.length=0 不就是清空数组的操作吗?
为什么会出现这样的情况呢?
这是引用类型和基本类型的内存问题
保存引用类型只是保存它的指针
保存基本类型则是新开辟一个空间存储
所以你上面的b = a[0]
也就是b保存了number,并没有保存引用类型
所以b是新开辟了一个空间进行存储,此时清除a,跟b是没有关系的
let a = [5,6,7]
let b = a[0]
console.log(typeof b, typeof a[0]) // number, number
如果你直接b = a那么复制的是引用指针,他们指向同一个内存,所以会产生联动影响
let c = [5,6,7]
let d = c
c.length = 0
console.log(c,d) // [] []
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
b的值是个number2,所以清不清A都跟他没关系了 跟直接写b=2一样的