JavaScript 设置丢失的引用但不改变大小

标签 javascript object reference set

我将对象引用存储在我的 JavaScript 集中:

let set1 = new Set();
let obj  = {};

然后,如果我使用 has() 方法和 Set 对象的 size 属性,我会得到下一个结果:

console.log(set1.size) //it returns 1
console.log(set1.has(obj)) //it returns true

但是,如果我使用下一个代码删除对象的引用:

obj = null;

然后奇怪的行为发生在我身上:

console.log(set1.size); //it returns 1 because they are Hard Sets.
console.log(set1.has(obj)); //it returns false

在最后一行,如果大小没有改变,为什么会返回false?然后引用丢失但大小没有改变。

最佳答案

In the last line, why does it return false if the size is not changed?

它返回 size = 1 因为它仍然保留一个值(对该对象的引用)。

它返回 false,因为它没有等于 null 的值。

But, if I remove the reference of the object using the next code:

您只需覆盖变量的值。在那之后,仍然有一个对该对象的引用(在 Set 内)。

要从 Set 中删除元素,您需要使用 Set.prototype.delete()方法:

set1.delete(obj);

大概您需要在 obj 仍然持有对该对象的引用时执行此操作。

关于JavaScript 设置丢失的引用但不改变大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37087440/

相关文章:

javascript - JSON 文字和 Javascript 对象。我很迷惑

javascript - 设置为显示时显示 HTML 元素 : none in CSS

javascript - 使用 jQuery 将一个对象数组转换为另一个对象数组

c++ - 如何判断Im是否通过引用正确使用?

javascript - FlatList 在 React Native 中没有显示任何内容

javascript - Node 控制台的 CoffeeScript 模式?

javascript - 在 JS 对象中初始化此属性的正确方法

json - JQ:如果某些键值相同则合并条目

c++ - 双指针有必要吗?

function - 在 Rust 中实际需要 move 到函数的情况