On Dec 8, 2009, at 11:36 AM, Brendan Eich wrote:
Adding new syntax makes for-in a boat-anchor implementations lug
around, in the best case. But realistically it will be years before
developers can count on the new loop construct. And as support comes
online, developers will have to choose which to use, and people
learning JS will have to cope with two similar kinds of loops.
Migration involves either a translator, or writing loops twice (a
non-starter in practice), or using a source to source translator.
Oops, I repeated the translator alternative when what I meant to say
was "people will stick with the old form, forever (for the life of
that content)."
On the other hand if we evolve for-in, then new code can be written to
normalize the type of the index if necessary, and the normalization
code can go away later, or be tolerated if lightweight enough:
for (let i in arraylike) {
i |= 0;
...
}
This is very cheap in some optimizing implementations if i is already
a number that happens to fit in a machine int.
New syntax could be nice but for-in has its own gravitational pull,
not just due to precedent but due to similarity to Python and other
languages. But mainly it won't be usable for years and in the mean
time, we'll have missed a lower-cost migration path that evolves (or
*reforms*, as in "recovers the good Platonic form" ;-) for-in.
/be
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss