|
|
|
|
|
by mdaniel
4005 days ago
|
|
Aren't they just objects that have integer properties; that's why you can for (k in ['a', 'b']) {
console.log(k);
}
and get back 0, 1? However: var a = {0:'a', 1:'b'};
for (k in a) {
console.log(k);
}
also outputs 0, 1.Edit: turns out, you can even have doubles, too: var weird = {3.14:'hello', 6.28:'world'};
// for loop above emits: 3.14, 6.28
console.log(weird[3.14]); // emits 'hello'
|
|
That's because Javascript doesn't actually have integers, it just has "Number":
> The Number type has exactly 18437736874454810627 (that is, 264−253+3) values, representing the double-precision 64-bit format IEEE 754 values as specified in the IEEE Standard for Binary Floating-Point Arithmetic
http://www.ecma-international.org/ecma-262/5.1/#sec-8.5