I guess I should have provided an example when I mentioned no block
level scoping. Try this on for size:
for (i = 0; i < 10; ++i); // Do nothing but increment i
var i:int;
trace(i);
This is totally valid code and will trace 10! ALL variable
declarations in a function, regardless of the block the variable is
declared in, are performed as the function is pushed on the stack.
Cory
On Thu, Mar 27, 2008 at 3:47 PM, jonathan howe <[EMAIL PROTECTED]> wrote:
> "I wish it did."
>
> Maybe at least one person saying that was what I was looking for... Thanks
> for the discussion!
>
>
>
> On Thu, Mar 27, 2008 at 4:22 PM, Ian Thomas <[EMAIL PROTECTED]> wrote:
>
> > AFAIK, in AS2 the Flash IDE didn't respect block level scoping, but
> > MTASC did, which led to some confusion. That leads some people to
> > think that AS2 as a language has block level scoping.
> >
> > AS3 definitely doesn't respect block scopes, and I curse every time I
> > trip over that 'variable declared twice' issue. I wish it did.
> >
> > Ian
> >
> > On Thu, Mar 27, 2008 at 8:09 PM, Juan Pablo Califano
> > <[EMAIL PROTECTED]> wrote:
> > > for (var i:int = 0; i < 10; i++)
> > >
> > > {
> > > if (i == 5) break;
> > > }
> > > trace(i);
> > >
> > > Mmm, have you actually tested the example? Because it does trace 5,
> > since,
> > > as it was explained earlier in this thread, there is no block level
> > scoping
> > > in AS 3.0. In fact, and this was mentioned too, all var declarations
> > are
> > > "moved up" to be executed as the first actions run in a function's code
> > (I
> > > believe that was called hoisting, but I might be wrong).
> > >
> > > Cheers
> > > Juan Pablo Califano
> > >
> > > 2008/3/27, Steven Sacks <[EMAIL PROTECTED]>:
> > >
> > >
> > > >
> > > > function doSomething
> > > > > {
> > > > > var i:int;
> > > > > for(i=0;i++;i<10)
> > > > > {
> > > > > }
> > > > > }
> > > > >
> > > > > Is functionally identical to this:
> > > > >
> > > > > function doSomething
> > > > > {
> > > > > for(var i:int =0;i++;i<10)
> > > > > {
> > > > > }
> > > > > }
> > > >
> > > > Wrong. It's not.
> > > >
> > > > In the latter example, i is not available after the loop. In the
> > first
> > > > example, it is.
> > > >
> > > > var i:int;
> > > > for (i = 0; i < 10; i++)
> > > > {
> > > > if (i == 5) break;
> > > > }
> > > > trace(i);
> > > > -- 5
> > > >
> > > > There are a multitude of uses for this, and I do it all the
> > > > time. Additionally, I read somewhere many moons ago (back in my
> > FLASM days)
> > > > that declaring variables outside a for loop is less bytecode and uses
> > less
> > > > memory. I don't believe that applies to the counter declaration, but
> > I do
> > > > know it applies to the comparison as well as vars declared inside the
> > for
> > > > loop. However, this level of optimization is only useful in a
> > practical way
> > > > on mobile and some games.
> > > >
> > > > _______________________________________________
> > > > Flashcoders mailing list
> > > > [email protected]
> > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> > > >
> > > _______________________________________________
> > > Flashcoders mailing list
> > > [email protected]
> > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> > >
> > _______________________________________________
> > Flashcoders mailing list
> > [email protected]
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
>
>
>
>
> --
> -jonathan howe :: 404.434.2321 :: 180 High St Apt 26 Portland, ME 04101
> _______________________________________________
>
>
> Flashcoders mailing list
> [email protected]
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
--
Cory Petosky : Lead Developer : PUNY
1618 Central Ave NE Suite 130
Minneapolis, MN 55413
Office: 612.216.3924
Mobile: 240.422.9652
Fax: 612.605.9216
http://www.punyentertainment.com
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders