Pochopení výrazu – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pochopení výrazu – JavaScript, AJAX, jQuery – Fórum – Programujte.comPochopení výrazu – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

velurex0
Stálý člen
11. 2. 2013   #1
-
0
-

Ahoj, prohlížím si cizí kód (konkrétně Stanford Javascript Crypto Library) a začíná to

 var sjcl = {cipher:{}};

sjcl.cipher.aes = function (a) {
    this.a[0][0][0] || this.d();
    var d, c, g, b, e = this.a[0][4], f = this.a[1];

poradí mi někdo co to namená? Zvlášť třetí řádek mi přijde trochu zamotaný.

Nahlásit jako SPAM
IP: 46.167.210.–
KIIV
~ Moderátor
+43
God of flame
11. 2. 2013   #2
-
0
-

jen deklarace promennejch... misto carek muzes hodit strednik a pak dalsi var ...

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
velurex0
Stálý člen
11. 2. 2013   #3
-
0
-

Vloudila se chybička. Myslel jsem třetí řádek celkově, ne v tom orámovaném bloku (ten tak neměl být)

Abych se to pokusil sám interpretovat tak:

1. řádek: zakládám objekt sjcl s vlastností cipher jejíž hodnotou je prázdný objekt? (k čemu je to dobré?)

3. řádek: A) co je a? pole integerů / bytů / uint? a kolika rozměrné? dle významu toho celku (algoritmus aes) bych očekávat 2d, ale spíše to vypadá na 3d (možná i víc). zapsáno v jiném jazyce (např. C# by to bylo int[][][] nebo int[,,]?

3. řádek: B) co je ten operátor "||"? Logické nebo bitové OR?

3. řádek: C) kam se vůbec výsledek toho celého výrazu ukládá?

Nahlásit jako SPAM
IP: 46.167.210.–
KIIV
~ Moderátor
+43
God of flame
11. 2. 2013   #4
-
0
-

prvni je vesmes inicializace... aby ten klic byl definovanej...

druhy je trojrozmerne pole...  neco jako int[,,] by bylo snad jen v pascalu

treti vypada na nekoho linyho pouzit if... pokud je tam cokoliv krom nuly (mozna jeste nedefinovane hodnoty), pak se vykona this.d()....  a je to logicke OR

vysledek se zahodi... jde nejspis primarne o zkracene vyhodnocovani vyrazu... kdyz se prvni cast vyhodnoti jako pravda, zbytek se nemusi vyhodnocovat protoze uz to proste nemuze nijak zmenit

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
peter
~ Anonymní uživatel
4016 příspěvků
12. 2. 2013   #5
-
0
-

sjcl.cipher.aes = function (a) {

prom.prom.prom = function (param) {

totez jako

function aaa (a) {...}

prom.prom.prom = aaa;

    this.a[0][0][0] || this.d();

Ted si nejsem jisty, kam presne this bude odkazovat, zda na prom.prom.prom nebo jen prom.prom, rekneme  prom.prom.

prom.prom.pole[cislo][cislo][cislo] - trojrozmerne pole

prom.prom.func() - spusteni funkce

A protoze je to zapsane jako podminka a || b, tak to bude fungovat tak, ze existuje "a" ano, pak skonci, neexistuje "a", pak vykonej funkci b. V te funkci muze byt return true nebo false, ale na tom nezalezi. Cili, funguje to asi takto:

if (!prom.prom.pole[cislo][cislo][cislo])

{prom.prom.func();}


    var d, c, g, b, e = this.a[0][4], f = this.a[1];

Deklarace promennych

var a,b,c; je jasne

var a = 5, b = 3, c = 2; To je zrovna naplneni hodnotou

this.a[0][4]

prom.prom.a[cislo][cislo] - normalni promenna

Kdybys to chtel zapsat jinak:

sjcl.cipher.aes + this.a[0][0][0]

sjcl['cipher']['aes']['a'][0][0][0]

sjcl.cipher.aes.a.0.0.0 // ale to nevim, jestli takhle bude fungovat jen s cislem

sjcl = { cipher: { aes: { a: [ [ [1, 2, 3], [4, 5, 6] ], [ [1, 2, 3], [4, 5, 6] ] ] } } };

Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 18 hostů

Podobná vlákna

PHP a pochopení OOP — založil šnek

Pochopeni C# pro preklad do VB — založil Adrian

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý