Rick Waldron wrote:
On Wednesday, December 26, 2012, Brandon Benvie wrote:I guess to sum up what I think Domenic was saying: people hoist var declarations so that their code acts the way the engine is going to execute it in order to prevent a mismatch between expectations and result. If there wasn't a reason to do that (AKA TDZ-UBI) then it wouldn't be done, because it's not otherwise desirable to do.Conversely, many also believe there is benefit in having a single place in a function to locate all of the formal parameter names and initialized identifiers. Assignment close to use also embraced by this pattern.
Well, vacuously if you force initialization in the declaration, but otherwise, manually hoisting can move a var very far from its uses.
Subjectively, this makes it easier to identify free vars used in the function.
I've heard that too. It's a bit of a chore to hoist manually, though, and I've noticed that those who say they do it tend to grow unhoisted declarations in their code over time.
Many also believe that hoisting is an excellent feature, not a weirdness.
For functions, I can defend hoisting, although if I had had more time, I might have done a let ... in ... or BCPL'ish equivalent form that groups the recursive bindings. For vars hoisting is pretty much an implementation abstraction leak in JS1 :-P.
/be _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

