gpt4 book ai didi

javascript - 为什么这个函数不使数组为空?

转载 作者:行者123 更新时间:2023-12-03 04:04:34 27 4
gpt4 key购买 nike

考虑一下这段代码,如果将 testb 属性设置为 2,为什么它不将 a 设置为 null?

var test = [];

function clear(a) {
a.b = 2;
a = null;
console.log(a); // null
}

clear(test);

console.log(test); // [b: 2]
console.log(test.b); // 2

最佳答案

因为 test 是对对象(具体来说是数组)的引用,本质上是一个指向数组在内存中存储位置的箭头。它的值是对内存中数组的引用。

当您将其传递给函数 clear 时,a 现在保存一个新引用,指向内存中的同一数组,从而修改 b code> 属性反射(reflect)了 test 上的更改。两个引用都发现您已更改 b 属性,因为它们指向同一数组。

然后将 a 设置为 null。 atest 是指向同一数组的单独引用,因此您可以断开 a 与数组的连接,但不会断开 test 的。 测试保持不变。

关于javascript - 为什么这个函数不使数组为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44616007/

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