Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prośba o wytłumaczenie elementów skryptu
marlowe
post
Post #1





Grupa: Zarejestrowani
Postów: 178
Pomógł: 0
Dołączył: 2.11.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam,
bawię się właśnie JsHacker 1.0 :) ale niestety JavaScript znam tylko "z widzenia" i mam problem z trzecim etapem. Kod wygląda tak:
Kod
<script type="text/javascript" language="JavaScript">
<!--

  function rome(N,s,R,b,a,o) {
    R='IVXLCDM'.split(s=''),b=0,a=2;
    while(N) {
      o=N%(a=7-a);
      N=N/a^0;
      while(o)
        s=R[o-->3?b+N%2+(N&=~1,o=1):b]+s;
      b++;
    }
    return s;
  }

  function check_passwd(v) {                                                                                                                                                                                                                           with(top)
    rome(v) == MCMXXXIX ? location.href = 'p4_'+v+'.html' : alert('Hasło niepoprawne !!!   ');
    return false;
  }

//-->
</script>

Oczywiście wywoływany jest poprzez:
  1. <form onSubmit="return check_passwd(passwd.value)">
  2. Podaj hasło: <input type="password" name="passwd" size="8">
  3.  
  4. <input type="submit" value="Ok">
  5. </form>

Rzecz jasna, nie chcę prosić o podanie wyniku ;) tylko o wytłumaczenie paru elementów bym mógł sobie dalej kombinować:
  1. czy dobrze się domyślam, że wywołanie funkcji, która w definicji ma kilka parametrów, z jednym z parametrem, powoduje, że parametr ten odczytywany jest jako pierwszy z listy parametrów z definicji, a pozostałe są puste (tj, że wywołanie rome(v) wykona funkcję z parametrem N == v);
  2. czy pierwsza linia funkcji rome() oznacza, że najpierw jest wywoływana instrukcja split dla 'IVXLCDM' z parametrem s='' , której wynik jest zapisywany w R (co w praktyce, jak rozumiem, oznacza zapisanie w kolejnych rekordach tablicy R ciągów zawierających kolejne znaki I, V, X, ...) natomiast b=0,a=2 to po prostu ustalenie wartości tych zmiennych?
  3. jedna z instrukcji to N=N/a^0 - z informacji w książce, którą mam wynika, że najpierw wykonuje się operację dzielenia; chciałem się natomiast dowiedzieć czy słusznie mi się wydaje, że XOR z 0 może dawać co najwyżej... 0?
  4. co oznacza zapis R[o-->...] ?- mam oczywiście na myśli "strzałkę";
  5. co oznacza with(top) w funckji check_passwd()?
Z góry dziękuję za odpowiedzi.
Pozdrawiam.
Bartek

Ten post edytował marlowe 25.06.2004, 16:56:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Paul
post
Post #2





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


1. Tak

2. Tak

3. Tak, dzielenie jest pierwsze, mozna sobie to spawdzic porownujac wyniki przy dwoch ustawieniach nawiasow - N=(N/a)^0; i N=N/(a^0); - co ciekawe IE sie przy tym drugim wiesza (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Zauwaz tez, ze o jest rowne na zmiane 1,0,1,0,a a jest rowne na zmiane 5,2,5,2 przy przechodzeniu przez petle...

4. Nie wypowiem sie, bo nie wiem, ale wyglada szpanersko (poszukam czegos o tym - jak znajde to napisze) (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

5. Chodzi oto, ze uzywa to zmiennej z obiektu top. Mozna to uzywac np. with(Math) i wtedy nie musisz pisac Math.round() tylko round().


PS. Jak otworzysz glowna ramke... Cos przypomina rzymskie cyfry... sprawdz to.... Mala podpowiedz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

PS2. Na te cyfry naprowadzilo mnie to, ze w 18 linii N musi byc liczba bo inaczej wyjdzie NaN....
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 14:54