David Bruant wrote:
Le 27/06/2012 10:31, Brendan Eich a écrit :
David Bruant wrote:
Le 26/06/2012 16:44, David Bruant a écrit :
Also relevant to this thread, post on the same topic by Isaacs
(node.js lead) : http://blog.izs.me/post/25906678790/on-es-6-modules
"Furthermore, |let| already gives us destructuring assignment. If a
module exports a bunch of items, and we want several of them, then
do |var {x,y,z} = import 'foo'| or some such."
=> Excellent idea. That combined with the single export idea reduces
the amount of new syntax to introduce.
Declarations can nest under control flow constructs, but import or
module dependencies must be prefetched. They're static.
if (some_rare_condition()) { let x = import "m"; ... }
either always prefetches "m", which does not say what is meant;
True.
It could be considered to allow 'let x = import "m";' only at the top
level.
But if it's the case, having a specific lexical form makes clearer
that it's a module import and not a regular assignment.
The other point people seem to miss about import as a special binding
form is not just that it can be restricted grammatically to be
control-insensitive by construction: it's that static export vs. import
checking can be done to catch typos.
This is a significant point, but it's either missed or assumed
insignificant. I think we should have a stand-up argument about it.
Static module systems are static, in dependency prefetching, in binding,
and in export vs. import checking.
/be
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss