Why is "export default var a = 1;" invalid syntax?

caridy caridy at gmail.com
Wed Feb 18 13:44:52 PST 2015


that’s part of the class declaration, like in:

export default class Foo extends Backbone {
      constructor() {
           …
      }
      ...
}

/caridy

> On Feb 18, 2015, at 4:40 PM, Jesse McCarthy <es-discuss-2015-02 at jessemccarthy.net> wrote:
> 
>> Jesse, you can do:
>> `export default class Foo extends Backbone {}`
> 
> Ok, thanks. The empty block is required? The part after `extends` is just an expression that evaluates to a function, right? So I could do this right (where Backbone.Model.extend() returns a function)?:
> 
> export default class Klass extends Backbone.Model.extend() {}
> Klass.prototype.whatever = whatever;
> 
> Thanks,
> Jesse
> 
> ----- Original Message ----- From: "caridy" <caridy at gmail.com>
> To: "Jesse McCarthy" <es-discuss-2015-02 at jessemccarthy.net>
> Cc: <es-discuss at mozilla.org>
> Sent: Tuesday, February 17, 2015 5:38 PM
> Subject: Re: Why is "export default var a = 1;" invalid syntax?
> 
> 
> Jesse, you can do:
> 
> `export default class Foo extends Backbone {}`
> 
> in case you want to reference to the exported class in the body of the module, or you can do:
> 
> `export default class extends Backbone {}`
> 
> /caridy
> 
>> On Feb 17, 2015, at 4:47 PM, Jesse McCarthy <es-discuss-2015-02 at jessemccarthy.net> wrote:
>> 
>> Re: https://esdiscuss.org/topic/why-is-export-default-var-a-1-invalid-syntax
>> 
>> I find myself wanting to do this kind of thing with a function returned from a function, e.g. when using Backbone, and it seems silly that I can't:
>> 
>> export default var Klass = Backbone.Model.extend();
>> Klass.prototype.whatever = whatever;
>> // ...
>> 
>> For that use case will the following be functionally identical? Any gotchas with circular dependencies or anything?
>> 
>> A)
>> var Klass = Backbone.Model.extend();
>> Klass.prototype.whatever = whatever;
>> export default Klass;
>> 
>> B)
>> var Klass = Backbone.Model.extend();
>> Klass.prototype.whatever = whatever;
>> export { Klass as default };
>> 
>> C)
>> var Klass = Backbone.Model.extend();
>> export default Klass;
>> Klass.prototype.whatever = whatever;
>> 
>> D)
>> var Klass = Backbone.Model.extend();
>> export { Klass as default };
>> Klass.prototype.whatever = whatever;
>> 
>> If I was willing to use class syntax could I do this?
>> 
>> export default class Klass extends Backbone.Model.extend();
>> Klass.prototype.whatever = whatever;
>> 
>> 
>> Glen Huang said:
>>> I think this is illegal, should be {a: a}
>> 
>> Sorry, I'm probably missing something obvious, but what is this referring to?
>> 
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150218/751e2f69/attachment.html>


More information about the es-discuss mailing list