ES6 spec: `export default` HoistableDeclaration

Axel Rauschmayer axel at rauschma.de
Thu Nov 27 16:50:11 PST 2014


Interesting that that matters. I wouldn’t have thought so – given that modules export references, not values.


> On 20 Nov 2014, at 01:54, Allen Wirfs-Brock <allen at wirfs-brock.com> wrote:
> 
> 
> On Nov 19, 2014, at 4:42 PM, Axel Rauschmayer <axel at rauschma.de> wrote:
> 
>>>> OK, I take it the following wasn’t viable?
>>> 
>>> that’s correct.  We wanted the initialization of a function like:
>>>    export default function () {}
>>> to be hoisted, just like:
>>>    export function f() {};
>> 
>> I suspect that that will confuse people: they will expect an anonymous function to be an expression, not a declaration (even more so because the operand of `export default` is usually an expression). Does hoisting even matter if the function doesn’t have a name? Is it worth it to introduce a completely new construct (an anonymous function declaration) just for `export default`?
>> 
> 
> It can make a difference to circular modules that reference each other’s default export.  Hosted function iinitialization occurs before anything in the module body is evaluated.  export default expression isn’t initialized at the point of the export declaration in the module body.
> 
> Allen

-- 
Dr. Axel Rauschmayer
axel at rauschma.de
rauschma.de



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


More information about the es-discuss mailing list