Reputation: 4800
Why can't we use integer keys in dot expression to access property values ?
var obj = {1: 'one', two: '2'}
console.log(obj.1) // error
console.log(obj.two)
Upvotes: 6
Views: 2161
Reputation: 930
Adding to @Arun P Johny' s answer
we can use obj['1']
with quotes or obj[1]
without quotes in case of integer.
where as accessing obj['two']
will work but obj[two]
will throw an error if there is no variable/constant as two.
Upvotes: 0
Reputation: 388406
In case of dot notation to access a value, the property key must be a valid identifier
In this code, property must be a valid JavaScript identifier, i.e. a sequence of alphanumerical characters, also including the underscore ("_") and dollar sign ("$"), that cannot start with a number. For example, object.$1 is valid, while object.1 is not.
You can use bracket notation in this case
obj['1']
Spec: Property Accessors
Upvotes: 13
Reputation: 1819
It is a JavaScript base princible which says variables cannot start with a number. Over here the property is a variable and hence it cannot start with a number.
You can check more about variable definition rules here
Hope this helps.
Upvotes: -2