ok thanks, as i expected then. Glad we agree it's counterintuitive, and although mtasc \^^\ oo /^^/ ROCKS, i like as3 too much to go back though:))
thanks Ian On Tue, Aug 18, 2009 at 10:43 AM, Ian Thomas <i...@eirias.net> wrote: > JC, > AS3 has no block scope. > > Whenever you write 'var x' inside a method, that declaration > (effectively) gets moved to the 'top' of the method. > > So at a compiler level, this: > > > private function _demo():void { > > for (var i:Number = 0; i < 10;i++) { > > //evil stuff here > > } > > for (var i:Number = 0; i < 10;i++) { > > //evil stuff here > > } > > } > > becomes this: > > private function _demo():void > { > var i:Number; > var i:Number; /// Second definition! > for (i=0;i<10;i++) > { > // Evil stuff > } > for (i=0;i<10;i++) > { > // Evil stuff > } > } > > And this: > > > private function _demo():void { > > for (var i:int = 0; i < 10; i++) > > { > > trace (this[j]); > > } > > var j:Object = null; > > } > > becomes this: > > private function _demo():void > { > var j:Object; > var i:int; > for (i=0;i<10;i++) > { > trace(this[j]); > } > j=null; > } > > I find it totally counterintuitive. It's a language spec thing. It was > the same in AS2 - although, interestingly, Nicolas Cannasse's MTASC > compiler added block scope and made AS2 work 'properly' - so it's not > like it's an issue at bytecode level. > > Ian > > > On Tue, Aug 18, 2009 at 9:28 AM, Hans > Wichman<j.c.wich...@objectpainters.com> wrote: > > Hey list, > > > > does anyone know the cool rationale behind the fact that the compiler > won't > > allow me to execute a completely sane piece of code such as: > > > > private function _demo():void { > > for (var i:Number = 0; i < 10;i++) { > > //evil stuff here > > } > > for (var i:Number = 0; i < 10;i++) { > > //evil stuff here > > } > > } > > > > (getting a redefined blablah variable, to which there is no workaround > but > > to rename the loop variables I think) > > > > But WILL allow me to do something stupid like: > > > > private function _demo():void { > > for (var i:int = 0; i < 10; i++) > > { > > trace (this[j]); > > } > > var j:Object = null; > > } > > > > > > :) > > > > JC > > _______________________________________________ > > Flashcoders mailing list > > Flashcoders@chattyfig.figleaf.com > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > _______________________________________________ > Flashcoders mailing list > Flashcoders@chattyfig.figleaf.com > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > _______________________________________________ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders