On 27.12.2010 14:39, Michael Day wrote:
Hi,

Some quick testing with Firefox seems to show that for-in returns properties in the order they were added to the object, and some scripts on the web (eg. RaphaelJS) seem to depend on that, unless I'm horrendously misinterpreting them. This seems... bad?


Yes, it's bad. Because the spec really statements that the order of evaluation isn't specified. Moreover, some side-effects, e.g. `delete`ing of properties or adding new is also not specified directly, though there is a mention on it. IIRC, there was a case with JScript (IE) and these side-effects. Regarding non-specificity enumeration, there was/is a case with V8 (Chrome).

However, IMO, it's bad from the spec viewpoint (even if such a agreement is taken in price of optimization). I think (and sure many programmers will agree) that the consistent is more important. And the syntactic (lexical) appearing properties in the object should be enumerated in the same order. Adding/removing while enumeration also should be handled correctly.


Are objects implicitly ordered, by implementation convention?


In some implementations -- yes, in some -- not. So, it's not recommended to rely on it. Though, repeat, I'd change the spec instead.

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

Reply via email to