@Kevin @Brendan

Thanks for the detailed explanation. If I’m not wrong, the exported binding is 
the module record in the spec, right?

Also sorry for the confusion about the “object” concept I mentioned. By 
“object”, I mean anything qualifies as an "AssignmentExpression” in the spec.

And after reading both of your responses, my question actually becomes: is it 
correct that there is not way to rebind the value being exported via the 
“export default” declaration, unless you use something like "export { a as 
default };"

Does it also mean that:

```js
export default function a() {}
a = 2;
```

The assignment "a = 2” will result in an error, since "function a() {}” is an 
expression, so “a” was never defined at that point?

From esthetic point of view, “a" being not bound in the previous snippet really 
surprises me, considering its “twin" version:

```js
export function a() {}
a = 2;
```

If I understand the spec correctly, this should cause the “a” export in the 
binding be 2.


> On Dec 16, 2014, at 12:50 PM, Brendan Eich <bren...@mozilla.org> wrote:
> 
> Kevin Smith wrote:
>> 
>>    ```js
>>    export default function a() {}
>>    a = 2;
>>    ``` 
>>    (This should be 2, right?)
>> 
>> 
>> I *think* the "default" binding in this case would still point to the 
>> function.  I find this particular example completely baffling, to be honest.
> 
> This seems clear. As Dave said, he originally proposed an '=' in between 
> 'default' and the *expression* to evaluate on the right. That design 
> remembrance should make clear that the default export is a function 
> expression (not function declaration) with 'a' the name only in the scope of 
> that function (either for recursion or as a downward funarg).
> 
> The 'default' binding won't be mutated via the final 'a = 2' statement, so 
> the default-exported value is still the result of evaluating the function 
> a(){} expression.
> 
> /be

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to