@aljoscha I'm sorry to be the bearer of bad news, but I just realized that the rule about integer keys being numerically ordered only applies to int
s, not integers.
> obj = {}
{}
> obj[Math.pow(2, 44)] = 1
1
> obj[Math.pow(2, 43)] = 2
2
> obj[Math.pow(2, 31)] = 3
3
> obj
{
'2147483648': 3,
'17592186044416': 1,
'8796093022208': 2
}
but it gets worse... it's actually only integers from 0
- 0xfffffffe
!
the 2^32-2
! 0xffffffff, 4294967295 is the first integer key treated as a string.
However, I confirmed this in both firefox and chrome, weird but seems to be intended.