I had some reads about garbage collection in JavaScript, according to them, local variables of functions are collected after the function returned (except for the cyclical references that need breaking circles for the GC to work).
What I'm trying to understand is, what does "function returned" in this context mean?
Does it mean:
The function has to return values.
or simply:
The function call has ended.
Common sense (according to me at least) suggests 2), but in the case I'm wrong:
- What about functions that don't return values?
- Should I add an empty
return;
to the functions that don't return anything to make the garbage collector do its job?
I had some reads about garbage collection in JavaScript, according to them, local variables of functions are collected after the function returned (except for the cyclical references that need breaking circles for the GC to work).
What I'm trying to understand is, what does "function returned" in this context mean?
Does it mean:
The function has to return values.
or simply:
The function call has ended.
Common sense (according to me at least) suggests 2), but in the case I'm wrong:
- What about functions that don't return values?
- Should I add an empty
return;
to the functions that don't return anything to make the garbage collector do its job?
- 2 The language specification does not specify when garbage collection occurs. Implementations are free to do it whenever they want, as long as they never collect anything that is still accessible to the program. The article you link to discusses some possible ways it could be done, but there is no requirement that it be done any of those ways. That article is quite old and GC technology has changed a lot since it was originally written. – Raymond Chen Commented Sep 12, 2013 at 21:09
- Re your link: This is 2013. I think it's safe to assume no one is using Netscape Navigator 3 :-) – David Knipe Commented Sep 12, 2013 at 21:21
1 Answer
Reset to default 9Functions that don't contain a return
statement implicitly return undefined
. So a function "ending" and "returning" are the same thing.
Concerning garbage collection, keep in mind that local variables are not collected immediately after functions return; they can just bee eligible for garbage collection at that point. The garbage collector runs whenever the browser considers it must run, or believes it can run without affecting visible performance much (and that's implementation-dependent).
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744846169a4596850.html
评论列表(0条)