Я столкнулся со сценарием, в котором JavaScript ведет себя так, что это несколько сбивает с толку.
Допустим, у нас есть объект с двумя ключами foo & бар.
a = { foo: 1, bar: 2 }
Затем у меня есть массив строк, в данном случае один 'foo'
b = ['foo']
Я бы ожидал следующего:
a[b] == undefined
a[b[0]] == 1
НО, вот что происходит:
a[b] == 1
a[b[0]] == 1
Почему JavaScript преобразует ['foo'] -> 'foo'
при использовании в качестве ключа?
Кто-нибудь там знает причину?
Как это можно предотвратить?
let a = { foo: 1, bar: 2 }
let b = ['foo']
console.log(a[b] == 1) // expected a[b] to be undefined
console.log(a[b[0]] == 1) // expected a[b] to be 1