在掘金上看到这样一个沸点
然后——
那么这是怎么实现的呢?
输出的是字符串,那么肯定是拼接的——那么
(!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]就是's',
({}+[])[[~!+[]]*~+[]]就是'b'
继续拆分
诶,这就是b么,,,原来就是'[object Object]'[2]啊
那上面的也不用说了,(!(~+[])+{})是'false',--[~+""][+[]]*[~+[]] + ~~!+[]是3就完了呗
另:其实(!(~+[])+{})输出的是"false[object Object]",所以(!(~+[])+{})写(!{}+[])也可。
下一个问题就是[~!+[]]*~+[]为什么是2呢?
一步一步看[~!+[]]坑定是个数组。
+[]是0(空数组转成数字是0),!+[]是true(0逻辑上是否,加否定就是true了),~true是-2(true转数字默认1,~1就是-2啦)
那么[~!+[]]*~+[]其实是——[-2]*-1,就是2!
那么最后——(!{}+[])[-~-~-~[]]+(!{}+[])[~!+[]*~!+[]]+(!{}+[])[~!+[]*~!+[]]+' '+(!![]+[])[-~-~[]],嘿嘿