As far as I have learned, the die
function will get created (allocated) each time freak
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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…