export default and export {foo as default}?
# Erik Arvidsson (10 years ago)
I looked into it in more details and I seem to have been mistaken.
"*default*"
is just internal spec name that is needed for hoisting
FunctionDeclaration and to create the required anonymous binding.
# Brendan Eich (10 years ago)
I recall others being confused; probably an informative note in the spec would help.
# Gary Guo (10 years ago)
In fact regarding export default foo
and export {foo as default}
as equivalent is current the practice of traceur.
It used to be the case that
export default
was just syntactic sugar for exporting something with the name "default".export default 42;
was the same as
const x = 42; export {x as default};
More importantly this symmetry was very useful on the import side as well as when reexporting default exports.
export {default} from './m.js'
The above line now requires a local binding.
import tmp from './m.js'; export default tmp;
I don't know why this was changed or if this was discussed anywhere?