此javascript代码如何/为什么打印';好玩吗;?
这是小提琴: 这段神秘的代码到底是如何工作的此javascript代码如何/为什么打印';好玩吗;?,javascript,Javascript,这是小提琴: 这段神秘的代码到底是如何工作的 alert( (![]+[])[[]-[]]+ (([]+[])+([][[]]))[[]-[]]+ (([]+[])+([][[]]))[!![]-[]] ); 因此,您得到了“f”+“u”+“n”==“fun” 进一步解释 “false” ![]为假+[]只是充当到字符串的转换。因此,我们获得字符串“false” “未定义” 其中一个操作数必须是字符串。这是由[]+[]完成的。实际的未定义在右侧创建:[[[]]===[[
alert(
(![]+[])[[]-[]]+
(([]+[])+([][[]]))[[]-[]]+
(([]+[])+([][[]]))[!![]-[]]
);
因此,您得到了“f”+“u”+“n”==“fun”
进一步解释
“false”
![]
为假<代码>+[]
只是充当到字符串的转换。因此,我们获得字符串“false”
“未定义”
其中一个操作数必须是字符串。这是由[]+[]
完成的。实际的未定义
在右侧创建:[[[]]
===[[][0]
,空数组的第一个条目是未定义
,因为字符串可以索引。请在控制台中将其分解。太棒了;为什么这会增加选票?如果你看不懂,你所需要做的就是一次试一小块。这有点令人沮丧。这些工作也是这样:,。作为旁注,([[]+[]])+([[][]])
对我来说似乎有些过火,([]+[[]])
似乎就足够了。@Neil:还有其他过火:[[]-[]==[+[]]]
。我相信(![]+[])[+[]]+([]+[[]]])[+[]]+([]+[[]])[+!![]]
是产生相同结果的最短序列。
vvvvvvv [0]
(![]+[])[[]-[]] = "false"[0]
^^^^^^^^ "false"
vvvvvvv again [0]
(([]+[])+([][[]]))[[]-[]] = "undefined"[0]
^^^^^^^^^^^^^^^^^^ "undefined"
vvvvvvvvv this time [1]
(([]+[])+([][[]]))[!![]-[]] = "undefined"[1]
^^^^^^^^^^^^^^^^^^ again "undefined"