返回信息流今天看见一个东西,完全不明白。
在javascript中,有一种“编码”(先姑且这样称呼吧),例如a<---->(![]+[])[+!+[]]等价的,我想问问,这是是什么啊?网上也只找到别人的一句话“the atomic parts of JavaScript. It uses only six different characters to write and execute code”
这是一条镜像帖。来源:北邮人论坛 / www-technology / #26749同步于 2014/7/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
[问题]javascript(![]+[])[+!+[]]
gdl
2014/7/26镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
(![]+[])[+!+[]]可以拆成两部分
(![]+[])和[+!+[]]
而![]+[]可以拆成 ![] + []。
在浏览器的console里面算算一下。
![] = false
![]+[] = false+[] = 'false'
另一方面 +!+[] = +(!+[]) = +(!(+[])) = +(!0) = +true = 1
所以 这个式子等价于 ('false')[1],即取false这个字符串的1号位置上字符,也就是"a"
好变态。。
【 在 weiyitheonly 的大作中提到: 】
: (![]+[])[+!+[]]可以拆成两部分
: (![]+[])和[+!+[]]
: 而![]+[]可以拆成 ![] + []。
: ...................