Wytłumaczenie nieczytelnego kodu JS

2018-12-04 16:57
0

Witam. Jestem początkujący w JSie i próbuje ogarnąć pewien fragment kodu wycięty z kodu innej strony.
Kod ten jest dla mnie trudny nie tylko do zrozumienia ale nawet do odczytania (i tu warto zaznaczyć, że autor tego kodu usilnie próbował uczynić ten kod możliwie mało czytelnym przez np. nazywanie zmiennych np wojtyla
Efekt działania tego kodu to obracanie elementów strony WWW tak, że elementy te "tańczą" na stronie uniemożliwiając ich rozpoznanie, jest to takie jakby zabezpieczenie. Ominięcie zabezpieczenia jest proste bo można je odczytać z pierwszego warunku ale cała reszta kodu to cyrk na kółkach.

<script type="text/javascript">
if(localStorage.xD!="xD") 
{
    +function(wojtyla,fuuuu,tim)
    {
        fuuuu=(function(sin,cos)
               {
                    return
                    {
                        x:function(t,p,p2)
                        {return pcos(tp2);},
                        y:function(t,p,p2)
                        {return psin(tp2);}
                    };
                }
              )(Math.sin,Math.cos);
        tim=0;
        setInterval(function(is,ii)
    {
        is=document.querySelectorAll("div");
        for(i=0;i<is.length;i++)
        {
            ii=is[i];
            ii.p||(ii.p=Math.random()500,ii.p2=Math.random()*100);
            with(ii[wojtyla])
            {
                position='relative';
                left=""+fuuuu.x(tim,ii.p,ii.p2)+"px";
                top=""+fuuuu.y(tim,ii.p,ii.p2)+"px";
            }
        }
        tim += 0.01;
    },10);
}
("style");

    var xD=document.querySelector(".boardTitle");
    xD.style="font-size:700px;top:0;position:fixed;transform:rotate(90deg)";
    xD.innerHTML='XD';
}
</script>

dodam że wcięcia są ŹLE zrobione ponieważ na początku nie było ich w ogóle (tak cały ten kod był pozbawiony wszelkich nadmiarowych znaków białych aby jeszcze trudniej to odczytać, ja spróbowałem jakoś to poprawić ale chyba wyszło niewiele lepiej.

skąd się biorą takie rzeczy jak np.

fuuuu=(function(sin,cos){returncoś})(math.sin,math.cos)

co w ogóle ma znaczyc idea linijki

zmienna=(funkcja(){})(funkcja)

bardzo prosze o pomoc ponieważ problem nurtuje mnie od jakiegos czasu i nawet po ogarnięciu wstępnie składni JSa nie jestem w stanie tego odczytac w żaden sposób
Za wszelką pomocą dziekuje

edytowany 1x, ostatnio: furious programming, 2018-12-04 17:51

Pozostało 580 znaków

2018-12-04 17:14
1

co w ogóle ma znaczyc idea linijki zmienna=(funkcja(){})(funkcja)

to akurat podstawy JSa. IIFE https://en.wikipedia.org/wiki[...]y_invoked_function_expression
Możliwe, że chodziło o to, żeby nie powtarzać Math.cos i Math.sin a wstrzykiwać te funkcje do funkcji.

pytanie tylko skąd zmienna pcos i psin z literą p na początku, bo są przekazywane argumenty o nazwach cos i sin

   left=""+fuuuu.x(tim,ii.p,ii.p2)+"px";
   top=""+fuuuu.y(tim,ii.p,ii.p2)+"px";

te linijki zmieniają pozycję elementów.

 xD.style="font-size:700px;top:0;position:fixed;transform:rotate(90deg)";

Ta też. Tzn. nie. Źle spojrzałem. Po prostu ustawia jakąś tam pozycję, ale bez animacji.


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);
edytowany 2x, ostatnio: LukeJL, 2018-12-04 17:18

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0