i am reading Professional JavaScript for Web Developers
i got problem when reading “When the garbage collector runs, it marks all variables stored in memory. It then clears its mark off of variables that are in context and variables that are referenced by in-context variables.”
i know when the object could not be reached by any variables, the memory associated would be reclaimed.
What does “variables that are in context” mean? Are they variables that could be found in the scope chain? But what about the “variables that are referenced by in-context variables”?
i am confused.
I’m assuming it’s to avoid accidentally deleting variables used in a closure. In javascript, just like any other functional language, just being unreachable is not enough to tell you weather you should delete an object.
Take for example the following code:
If we follow just the “unreachability” rule then the closure created would lose the variable
x.