> >> var a = [];
> >> a[0] = "first";
> >> a[0.0m] = "second"; // a second property?
> >> a[0.000m] = "third"; // a third?
> >
> > [...]
> >
> > It seems to me that if trailing zeros are retained in a call to
> > ToString, then to be consistent with ES3, the three assignments above
> > would produce three properties. And if trailing zeros are lost, you
> > would expect to only have one. Both approaches are internally
> > consistent, and it surprises me to see either one characterized as
> > "breaking" array lookup.
>
> Well, the intuition is that two equal numbers should index the same
> property. This is an invariant in ES3 and it makes a lot of sense.
Seems to me the problem here is not decimal (or binary) representations
but arrays (consider a(0.0) and a("0.0")).
In effect the array definition in ES3 says -- in a rather roundabout way
-- that all indexes must be an integer (which fits in 32 bits if encoded
in binary). So, as long as there's a toInt32 in there, decimals with
trailing zeros after the point are just fine. In other words the
processing of array indexes could (conceptually) be
toString->toNumber->toInt32 (or something like that).
Mike
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
_______________________________________________
Es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss