javascript对象用中括号取值不加双引号为什么会去访问变量

var a = 'b';
var obj = {
a: 123
}
obj[a] == obj['b']
我向了解更深点,为什么中括号不加双引号会去访问变量去

几乎所有的编程语言,没有引号的合法标识符都表示一个变量。
这个变量单独写出来代表一个最基本的表达式,表达式的值就是变量代表的值。
因此 obj[a] 就是 obj[a的值],而a的值就是 'b',用引号包围的字符,就是字符串,它不表示变量,而是表示字面的值。
这个别说js,任何语言都是最基本的概念。