alert(
(![]+[])[[]-[]]+
(([]+[])+([][[]]))[[]-[]]+
(([]+[])+([][[]]))[!![]-[]]
);
这是 fiddle :http://jsfiddle.net/leeny/6VugZ/
这段神秘的代码究竟是如何工作的?
最佳答案
vvvvvvv [0]
(![]+[])[[]-[]] = "false"[0]
^^^^^^^^ "false"
vvvvvvv again [0]
(([]+[])+([][[]]))[[]-[]] = "undefined"[0]
^^^^^^^^^^^^^^^^^^ "undefined"
vvvvvvvvv this time [1]
(([]+[])+([][[]]))[!![]-[]] = "undefined"[1]
^^^^^^^^^^^^^^^^^^ again "undefined"
因此你得到 "f"+"u"+"n"=== "fun"
。
进一步说明
“假”
![]
为 false
。 +[]
只是作为字符串的转换。因此我们获得了字符串"false"
。
“未定义”
其中一个操作数必须是字符串。这是由 []+[]
完成的。实际的 undefined
在右侧创建:[][[]]
=== [][0]
,第一个条目空数组的 undefined
。
关于javascript - 这个javascript代码如何/为什么打印 'fun' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15302915/