alert(
(![]+[])[[]-[]]+
(([]+[])+([][[]]))[[]-[]]+
(([]+[])+([][[]]))[!![]-[]]
);
Run Code Online (Sandbox Code Playgroud)
继承人的小提琴:http://jsfiddle.net/leeny/6VugZ/
这段神秘的代码究竟是如何工作的?
vvvvvvv [0]
(![]+[])[[]-[]] = "false"[0]
^^^^^^^^ "false"
vvvvvvv again [0]
(([]+[])+([][[]]))[[]-[]] = "undefined"[0]
^^^^^^^^^^^^^^^^^^ "undefined"
vvvvvvvvv this time [1]
(([]+[])+([][[]]))[!![]-[]] = "undefined"[1]
^^^^^^^^^^^^^^^^^^ again "undefined"
Run Code Online (Sandbox Code Playgroud)
因此,你得到"f"+"u"+"n" === "fun".
"false"![]是false.+[]只是作为一个字符串的转换.因此我们获得了字符串"false".
"undefined"其中一个操作数需要是一个字符串.这是由[]+[].实际undefined是在右侧创建的:[][[]]=== [][0],空数组的第一个条目是undefined.
| 归档时间: |
|
| 查看次数: |
442 次 |
| 最近记录: |