关于javascript:为什么打印10?

Why does this print out 10?

本问题已经有最佳答案,请猛点这里访问。
1
console.log(++[[]][+[]]+[+[]]);

为什么这本书只印了10本而不是别的什么?这让我发疯太久了。我在阅读以下文章时发现了这一点:

http://tutorialzine.com/2013/12/the-10-weirdest-programming-languages/

也许有人能提供一个明确的解决方案。我期待着你们的迅速反应。


您只能使用六个不同的字符来编写和执行任何JS代码。例如,这里有一些对JS构造的表示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
false       =>  ![]
true        =>  !![]
undefined   =>  [][[]]
NaN         =>  +[![]]
0           =>  +[]
1           =>  +!+[]
2           =>  !+[]+!+[]
10          =>  [+!+[]]+[+[]]
Array       =>  []
Number      =>  +[]
String      =>  []+[]
Boolean     =>  ![]
Function    =>  []["filter"]
eval        =>  []["filter"]["constructor"]( CODE )()
window      =>  []["filter"]["constructor"]("return this")()

证明在JS F*CK和细节在为什么++[[][+[]+[+[]]返回字符串"10"?