Javascript (!+[]+[]+![])结果背后的原因是什么

Javascript (!+[]+[]+![])结果背后的原因是什么,javascript,Javascript,如前所述,该行: (! + [] + [] + ![]) 结果给出字符串truefalse 我一直在用它做实验,但不能完全掌握发生的隐式转换,我想知道结果背后的原因 只是好奇 false => ![] true => !![] undefined => [][[]] NaN => +[![]] 0 => +[] 1 => +!+[] 2 =&

如前所述,该行:

(! + [] + [] + ![])
结果给出字符串truefalse

我一直在用它做实验,但不能完全掌握发生的隐式转换,我想知道结果背后的原因

只是好奇

false       =>  ![]
true        =>  !![]
undefined   =>  [][[]]
NaN         =>  +[![]]
0           =>  +[]
1           =>  +!+[]
2           =>  !+[]+!+[]
10          =>  [+!+[]]+[+[]]
Array       =>  []
Number      =>  +[]
String      =>  []+[]
Boolean     =>  ![]
Function    =>  []["filter"]
eval        =>  []["filter"]["constructor"]( CODE )()
window      =>  []["filter"]["constructor"]("return this")()

有关它的更多信息,请访问。

这里有一些东西让那些没有深入研究的人感到困惑:Array.prototype.join=>1;!+[] + [] + ![];