为什么javascript会将以下内容评估为true,因为该对象foo具有有效属性bar?
foo[[[["bar"]]]] === foo["bar"]
Run Code Online (Sandbox Code Playgroud)
基于运算符优先级,我认为foo[[[["bar"]]]]是尝试以数组[[["bar"]]]作为键访问属性,但为什么它仍然"平坦化"到相同的foo["bar"]?
我的同事们说javascript解析器有简化括号,忽略了额外的括号.我不认为这是真的,因为保存[[["foo"]]]到变量test会得到相同的结果:
> test = [[["bar"]]]
[Array[1]]
> foo["bar"] = 5
5
> foo[test]
5
Run Code Online (Sandbox Code Playgroud)
语言或解析器的哪个方面导致了这种行为?谢谢!