On Nov 17, 2011, at 8:00 AM, Jason Orendorff wrote: > On Wed, Nov 16, 2011 at 1:12 PM, Erik Arvidsson > <erik.arvids...@gmail.com> wrote: >> One thing that all of these discussions are missing is the hoisting >> property of function and any possible future classes. If we use "let >> Point = ..." we lose all hoisting and the order of your declarations >> starts to matter and we will end up in the C mess where forward >> references do not work. > > Can you give sample code where this is really a problem?
People take advantage of the fact that they can define their functions wherever they want in JS and they'll already be initialized. It's perfectly reasonable to have a bunch of classes and want to group them together thematically, and not have to sort them in order of initialization. > I think it's a problem in C/C++ because of early binding and because > the C/C++ parser has to recognize typenames. > > In ES, the scope of "let Point = ..." is the enclosing block, right? > Forward references should work fine. This isn't about scope, it's about at what point they're initialized. If you write: let x = new C(); let C = class /* whatever */; you won't get a scope error but a runtime initialization error. Whereas if you write: let x = new C(); class C { ... } it'll work fine. I'm with Arv 150% on this. Dave _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss