Class static blocks

Lars Hansen lhansen at adobe.com
Sun Apr 20 21:40:09 PDT 2008


Static blocks are anonymous parameterless functions.  "var" hoists 
to the top of these functions (as in any other functions); "static"
is disallowed (because it's legal only on class attributes); and
other binding forms that are legal in functions ("function", "let",
"const") are legal.

--lars

> -----Original Message-----
> From: es4-discuss-bounces at mozilla.org 
> [mailto:es4-discuss-bounces at mozilla.org] On Behalf Of Michael O'Brien
> Sent: 20. april 2008 22:16
> To: Jeff Dyer
> Cc: es4-discuss Discuss
> Subject: Re: Class static blocks
> 
> Jeff,
> 
> What happens to "var" declarations inside a static block?
> Are they converted to static declarations or disallowed?
> 
> Similarly, I presume a redundant "static" attribute inside a 
> static block is allowed.
> 
> Michael
> 
> 
> On Apr 20, 2008, at 4:50 PM, Jeff Dyer wrote:
> >
> >
> >
> > On 4/20/08 11:52 AM, Michael O'Brien wrote:
> >
> >> I wanted to clarify the meaning of a static block. Consider:
> >>
> >> class Shape {
> >>
> >> static var count
> >> var origin
> >>
> >> static {
> >> // Is this static initialization code?
> >>
> >> count = 1
> >> }
> >>
> >> {
> >>
> >> // Is this instance initialization code?
> >>
> >> origin = 0
> >> }
> >> }
> >>
> >>
> >> Reading the latest draft of the grammar I'm assuming that you must 
> >> now put static init code inside a static {} block. Is this correct?
> >
> > That is correct.
> >
> >> Does that mean that other directives outside of methods and static 
> >> blocks are instance initialization code?
> >
> > No, statements are no longer allowed at the top level of a class 
> > definition.
> > Class initialization code goes in 'static {...}' blocks, 
> and instance 
> > initialization code goes in constructors, of course. 
> Multiple 'static 
> > {...}'
> > blocks are allowed.
> >
> > Jd
> >
> 
> _______________________________________________
> Es4-discuss mailing list
> Es4-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es4-discuss
> 



More information about the Es4-discuss mailing list