I have some nested functions such as
var freak = function() {
var die = function() { ... }
die(this);
}
As far as I have learned, t
As far as I have learned, the
die
function will get created (allocated) each timefreak
is called.
Yes. This is true. A new function-object is created.
So if
freak
gets called a lot of time, that means a lot of memory will be wasted [...]
For some very small and normally inconsequential value of "wasted".
JavaScript engines are very efficient these days and can perform a wide variety of tricks/optimizations.
For instance, only the function-object (but not the actual function code!) needs to be "duplicated" internally.
[...] does that mean nested functions should be avoided entirely?
No. There is no "wasting" problem without an actual test-case that shows otherwise. This idiom (of nested and anonymous functions) is very common in JavaScript and very well-optimized for.
Nested functions provide many benefits including self-documenting code, smaller self-contained lexical scopes, and other code isolation/organization advantages.