Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #16135
| Message-ID | <7227299.QoKgMUOf8L@PointedEars.de> (permalink) |
|---|---|
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
| Organization | PointedEars Software (PES) |
| Date | 2012-09-24 01:10 +0200 |
| Subject | Re: silly question on closure |
| Newsgroups | comp.lang.javascript |
| References | <a9704993-d83a-4392-8a65-82755e9ba320@u15g2000yql.googlegroups.com> <k3kocg$8ok$1@news.albasani.net> |
| Followup-To | comp.lang.javascript |
Followups directed to: comp.lang.javascript
Stefan Weiss wrote:
> On 2012-09-22 14:04, justaguy wrote:
>> Code:
> [snipped]
>
>> Question:
>> The closure takes so many lines while the function has only 2 lines to
>> get the same thing done. So, the question is, why do we use closure?
>
> You don't, just like you don't actually use "Hello, world" in production
> code. This was obviously just an example for how closures work. If this
> was code intended for actual use, your "just a function" variant would
> be better suited (provided it only returned the value, like in the
> "closure" example).
You are mistaken as you are overlooking that creating that Array instance
and populating it with elements requires resources – memory and runtime.
Since we have only automated garbage collection, and the function may be
called a number of times, it is better to use a closure here, so that the
object would only be created, and the array only populated, once.
There is, however, a caveat to intended closures of that kind that can turn
out to be a disadvantage: The order of execution matters. All variables
used in the outer function must have the proper value *before* the outer
function is called that returns the inner function. (As the reader might
recall, I have stumbled on that myself in JSX:object.js several times.)
In a library that uses closures for optimization and did not start out with
the module pattern, this can mean that at one point the whole library must
use the module pattern, i. e. all its definitions must be enclosed in one
inner function. (I am currently in the process of refactoring JSX:object.js
like that so that I do not have to care any longer about execution order,
potentially having to sacrifice backwards-compatibility along the way.)
> One case where the closure variant would be preferred is if the contents
> of then "names" array would take a long time to compute, or if they were
> fetched from a remote source.
One, and certainly not the only or most likely case.
PointedEars
--
realism: HTML 4.01 Strict
evangelism: XHTML 1.0 Strict
madness: XHTML 1.1 as application/xhtml+xml
-- Bjoern Hoehrmann
Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
silly question on closure justaguy <lichunshen84@gmail.com> - 2012-09-22 05:04 -0700
Re: silly question on closure Stefan Weiss <krewecherl@gmail.com> - 2012-09-22 18:18 +0200
Re: silly question on closure justaguy <lichunshen84@gmail.com> - 2012-09-22 18:41 -0700
Re: silly question on closure Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-09-24 01:10 +0200
Closures (was: silly question on closure) Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-09-24 13:14 +0200
Re: silly question on closure Stefan Weiss <krewecherl@gmail.com> - 2012-09-27 05:04 +0200
Re: silly question on closure Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-09-27 20:50 +0200
Re: silly question on closure Stefan Weiss <krewecherl@gmail.com> - 2012-09-27 21:29 +0200
Re: silly question on closure "Tom de Neef" <tdeneef@qolor.nl> - 2012-09-22 20:00 +0200
Re: silly question on closure justaguy <lichunshen84@gmail.com> - 2012-09-22 18:42 -0700
Re: silly question on closure justaguy <lichunshen84@gmail.com> - 2012-09-23 07:31 -0700
Re: silly question on closure Stefan Weiss <krewecherl@gmail.com> - 2012-09-23 18:49 +0200
Re: silly question on closure justaguy <lichunshen84@gmail.com> - 2012-09-23 13:33 -0700
Re: silly question on closure justaguy <lichunshen84@gmail.com> - 2012-09-23 13:38 -0700
Re: silly question on closure Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-09-24 20:49 +0200
Re: silly question on closure Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-09-24 01:14 +0200
Re: silly question on closure dann90038@gmail.com - 2012-09-23 15:37 -0700
csiph-web