Может ли ключ в паре ключ:значение иметь тип, отличный от строки?
Я поспорил с ментором, что ключ в паре ключ: значение может быть не только рядком. На моей стороне есть VS Code в котором можно поставить число в ключ и потом по этому ключу получить значение. На его стороне разные статьи и конспекты где написано, что ключ может быть только рядком. Кто-нибудь может либо достоверно аргументировать мою сторону, либо если я не прав - его сторону.
Ответы (1 шт):
Формально вы правы, но не там где вы думаете. Ключом в объекте могут быть не только строки, но и символы (Symbol).
Если не рассматривать символы, то ментор прав. При использовании любых других типов они неявно приводятся к строке.
> a = {1:'hello'}
{ '1': 'hello' }
> a[1]
'hello'
> a[1.0]
'hello'
> a[001]
'hello'
> a['1']
'hello'
> x = [1]
[ 1 ]
> a[x]
'hello'
> a[100e-2]
'hello'
> Object.keys(a)
[ '1' ]
Ну и конечно спецификация тоже на стороне ментора. https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-object-type
[…] A property key is either a String or a Symbol. […]