最近我发现了一个有趣的网站,展示了Javascript混淆器:http://bl.ocks.org/jasonsperske/5400283
例如,(([]===[])+/-/)[1]
会得出a
,(1+{})[(1<<1)+1]
会得出b
。
我曾经努力尝试理解这些混淆结果的评估顺序,但是徒劳无功。
以(1+{})[(1<<1)+1]
为例,我知道<<
是位移运算符,会返回2,所以表达式变成了(1+{})[3]
。但是我不明白1+{}
和[3]
的意思。
谷歌对这个问题并不是很有帮助,因为搜索引擎不太喜欢括号或斜杠,所以如果有重复的问题,对此我很抱歉。