1 of 12

integer indices vs. array indices

tc39/ecma262#1242

2 of 12

3 of 12

+0

2**32-2

+0

2**53-1

integer index

array index

4 of 12

5 of 12

Reflect.ownKeys({� a: 1,[2**53]: 1, // max integer index + 1[2**53-1]: 1, // max integer index42: 1,[2**32-1]: 1, // max array index + 1[2**32-2]: 1, // max array index});

6 of 12

Reflect.ownKeys({� a: 1,[2**53]: 1, // max integer index + 1[2**53-1]: 1, // max integer index42: 1,[2**32-1]: 1, // max array index + 1[2**32-2]: 1, // max array index});// Expected result (per current spec):['42','4294967294', // max array index'4294967295', // max array index + 1

'9007199254740991', // max integer index // -----------------------------------------'a','9007199254740992', // max integer index + 1]

7 of 12

Reflect.ownKeys({� a: 1,[2**53]: 1, // max integer index + 1[2**53-1]: 1, // max integer index42: 1,[2**32-1]: 1, // max array index + 1[2**32-2]: 1, // max array index});���// Expected result (per current spec):['42','4294967294', // max array index'4294967295', // max array index + 1'9007199254740991', // max integer index

// -----------------------------------------'a','9007199254740992', // max integer index + 1]

// Actual result in all engines:['42','4294967294', // max array index

// -----------------------------------------'a','9007199254740992', // max integer index + 1'9007199254740991', // max integer index'4294967295', // max array index + 1]

8 of 12

9 of 12

Merge the PR?

tc39/ecma262#1242

10 of 12

Related:

tc39/ecma262#1243

tc39/ecma262#1244

11 of 12

12 of 12