var a = ""+([][[]]+[])[(((((+(!!!![])))))+[])]+(+((((+!(+[])))+[])+(![]+[])[(((((!+([])+!+([])+!!!!([])+!!!!([])))))+[])]+(+!!!!([])+[])+((((((((+!(!![]))))))))+[])+(((+!(!![])))+[])+((((((((+(![]))))))))+[]))+[])[((!+[])+(!![])+!!!!([])+!+([])+(!!!![])+!+[]+!+[]+[])]+((((((((!+[])+!(![])+!!([])+(!![])))))))+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+[])+"";
用控制台试了一下结果是 ny47,请问怎么得出来的。
1
limuyan44 2020-04-07 01:31:34 +08:00
([][[]]+[]) [!![]+!![]] 看输出就知道了
|
2
learningman 2020-04-07 01:57:48 +08:00 via Android
混淆呗,不要用人脑去分析,浪费时间
|
3
crab 2020-04-07 02:30:59 +08:00 1
jsfuck decode
|
4
yuzo555 2020-04-07 02:36:12 +08:00
利用 JS 输出的 undefined 、false 这些字符串作为初始素材,
以及 bool 可以转换为 0 或 1 输出数字进行定位, 最终就可以组合出需要的代码或字符串 |
5
zhw2590582 2020-04-07 07:59:27 +08:00 via iPhone 5
不要去研究这种没意义的东西
|
6
TomVista 2020-04-07 08:28:58 +08:00
let temp = 13 >> 1 最近见到的
|
7
icedwatermelon 2020-04-07 08:58:05 +08:00 1
|
8
guolaopi 2020-04-07 09:31:03 +08:00
@zhw2590582
然而相关知识面试会问的吧? |
13
Mutoo 2020-04-07 09:50:12 +08:00
jsfuck 的源码有详细的 mapping
https://github.com/aemkei/jsfuck/blob/master/jsfuck.js 我之前分析过一个类似的代码,供参考 https://blog.mutoo.im/2014/02/make-the-heart-shape-code/ |
15
zhw2590582 2020-04-07 11:11:49 +08:00 via iPhone
@guolaopi 最多会问类型的隐式转换,但这种题目只要变一下,面试官都不知道怎么回答。
|
16
biguokang 2020-04-07 11:45:34 +08:00
@TomVista 位运算符不算冷门,相反在某些地方还有用,例如
const KB = 1 << (10 * 1) const MB = 1 << (10 * 2) const GB = 1 << (10 * 3) const TB = 1 << (10 * 4) const PB = 1 << (10 * 5) 在 go 语言里面结合 iota 特性更酸爽 const ( _ = iota KB = 1 << (10 * iota) MB GB TB PB ) |
18
marcong95 2020-04-07 12:09:05 +08:00 1
@gimp #12 这种东西归根到底还是隐式转换、falsy value 、运算符优先级一系列的东西,不至于一上来就睿智不睿智的,玩动态类型语言这种东西从来应该有基本认识。写自然是不应该写的,但是读并不是什么难事
|
19
biguokang 2020-04-07 13:53:50 +08:00
@TomVista
更骚的还有按位取反运算符 if ( str.indexof('xxx')!==-1 ) { //xxxxx } 可以写成 if ( ~str.indexof('xxx') ) { //xxxxx } |
20
wednesdayco 2020-04-07 20:12:38 +08:00
for(_='c[c.D,DZ),YYDX](W+2*Vp<1U.06TMath.sin( p *p +3* *C .183 ][p>> ,1 )/ %1 00 ;C--;) 0, , , C ,.6 C 7==3 ,U44&p )*]=Zfy for( /2 DfcW Y (M-C p / ( +1.82 *t)<0& C )>.7 ) .57+.79) C in c)c[C[0]+[C[6]]C;t=M=y=o=I=2,setInterval(h=>{ t=t%3 +T,a.width=a.height=$=9 "#111"ZgC"lighter"ZsS"#333", $,$XtaW$ ,6 XsC"#0ff",C=82,R=t/9-23,p=R<3?R:3,M+=o=!M|M>78?-o:o,y+=I=!y|y>2 ?-I:I,R>0&&(DsB5,R>5&&DsRW-C 2*-C C 2.8 ,(y-2 p,2 4 *y/C/3-9 C 18 8 )XsB i=1;i++<24;c.clip()){if(p=t+i| R=$/(i-t Ys=R/4 k=U28?0: /12*5$*9/R,l=U75?0:k `hsl(${p 28<64?2 :3 },75%,${50+50* /8)}%)`ZgAT-(i<4t *T,c.fill(XgA1 "#9bf" %32<1) C=16 R/8 -R,-$ -3*R,s ,$); DldR/8 >16&&(p 6||c.stroke()XbaWYC=24 r=R*[.6 ,p%4|p<48?1 :1 +p/6 / (.262 +1.7 >>1&p 3+1 +p 4- 6+.7-!(C %9 6 + /4+t/3 4 5]ZlWA=k+ d_a= -2.1r-s ,B=l- d_a+7.84r*(p>192?3:1)-s Y[ , +( Vt(2V t))|0YC<4 )|C>19 YC==((p/8&1?6:9t%20|0) +p+t)< C>9&C<14,(C +pVt 5&1 , 0 4]&& A,B,s,s)}} 7)';G=/[ - T-ZD]/.exec(_);)with(_.split(G))_=join(shift());eval(_)
你可以来看看这段。更加神奇。 |