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 ![]() 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 ![]() 不要研究这种没意义的东西 |
![]() | 6 TomVista 2020-04-07 08:28:58 +08:00 let temp = 13 >> 1 最近见到的 |
![]() | 7 icedwatermelon 2020-04-07 08:58:05 +08:00 ![]() |
![]() | 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 ![]() @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&&(DsB 5,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)}%)`ZgA T-(i<4 t *T,c.fill(XgA 1 "#9bf" %32<1) C=16 R/8 -R,-$ -3*R,s ,$); Dld R/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.1 r-s ,B=l- d_a+7.84 r*(p>192?3:1)-s Y[ , +( Vt (2V t))|0YC<4 )|C>19 YC==((p/8&1?6:9 t%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(_) 你可以来看看这段。更加神奇。 |