++[[]][+[]]+[+[]] = 10

「javascriptで ++[[]][+[]]+[+[]] = 10 になるのを説明できる人いる?」
って質問がStackOverFlowにUPされてたけど、
http://stackoverflow.com/questions/7202157/can-you-explain-why-10

その回答611が完璧!
これを理解するのに一番の肝は+[]で、

+[]を実行すると
1,[]のtoStringが実行され、+””と評価される。
2,さらにNumber型への変換がされ、0と評価される。

++[[]][+[]]+[+[]] を書き直すと

++[[]][0]
+
[0]

と評価され

++[[]][0]
+
[0]

その後

++([[]][0])
+
[0]

更に

([] + 1)
+
[0]

最後に

1
+
"0"
== "10"

で結果 10になる!