For example, I have some code that uses a Map just to keep a collection of
things (the keys) but values are not important, so they are undefined, like
this:

```js
let something = {}
let otherThing = {}
let m = new Map

m.set(something)
m.set(
​otherThing​
)
```

where the values for those object keys are `undefined` since there's not
second arg to `m.set`. If I add the line

```js
m.clear()
```

and retain references to `something`, `otherThing`, and `m`, I know that
those objects won't be GCed. What about the `undefined` values? Are those
`undefined` values something that the GC has to collect? Or do `undefined`
values literally reference nothing, not needing to be collected?

Just wondering because I want to avoid GC while rendering animations at
60fps. I know I can prevent GC if I retain a value to some constant, as in

```js
let something = {}
let otherThing = {}
const foo = true
let m = new Map

m.set(something, foo)
m.set(
​otherThing​, foo
)

m.clear()
```

so then if I retain the reference to `foo` then there's no GC; I'm just
sticking things in and out of the Map, but I'm curious to know how
`undefined` is treated, because if that prevents GC, then the code can be
cleaner.

 - Joe
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to