我知道首先执行+[]
,然后将其转换为0
因此表达式变为
[[][[]]+[]][0][++[0][0]]
然后我认为++
具有高优先级,但++[0]
似乎是非法的
那么为什么最终结果是n
?
答案 0 :(得分:2)
从内到外开始:
[ [][[]]+[] ][0][ ++[0][0] ]
首先考虑[][[]]+[]
:[]
是一个空数组。 [[]]
之后是属性访问者。因此内部[]
强制转换为字符串""
。 [][""]
为undefined
(数组中没有名称为""
的属性。)以undefined + []
强制双方为字符串并向我们提供"undefined"
。所以现在我们有:
[ "undefined" ][0][ ++[0][0] ]
下一部分非常明显:["undefined"][0]
是"undefined
"。所以现在我们有:
"undefined"[ ++[0][0] ]
让我们做一下属性访问器,++[0][0]
:[0]
是一个包含0. [0]
的数组,在它编入索引之后,所以我们正在递增数组在索引0(为0)处输入以使其为1。
现在我们有:
"undefined"[1]
...这是" n"。