Diskuze: Jak chápat script
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Nejak v tom nevidím logiku. To je z reálneho kódu? Alebo je to z nejakého príkladu?
Je to minifikovaný výstup jednoho mého testovacího scriptu. Logiku v něm nehledej, podstata problému je/byla popsána výše.
Původní script je
function fun(){return 1;}; var a=fun(); if (a) fun();
Hmm, teďka, když se snažím popsat mé zmatení, se na to znovu dívám, a zjišťuji, že stejný problém je už v původním neminifikovaném scriptu. I "if (a) fun();" může na zásobník uložit hodnotu, jež není zkonzumována.
Tímto si sám odpovídám, že compiler/interpreter se s takovýmto stavem musí nějak poprat. Před "prohlédnutím" mi ta minifikovaná verze připadala nelogická, ale je to jen nedostatek praxe s JS.
Ako nie, že by to nefungovalo a v princípe konštrukcia a&&fun() funguje tak, že ak aj je v premennej a truthy hodnota, čiže sa dá premenná a vyhodnotiť ako true, tak sa spustí funkcia fun. Čo je naozaj to isté, ako to napísať ako if (a) fun(). Avšak, či je to napísané tak, či onak, oba prípady sú naprosto zbytočnou konštrukciou. Síce funkčnou konštrukciou, ale zbytočnou, bez akéhokoľvek zmyslu z pohľadu praktickosti.
Zdá se, že nejsem schopen správně popsat problém. Ten nespočívá v logice či nelogice daného skriptu (a proto se k ní nemusíme vracet), ale v procesingu. Nějak mi nedošlo, že kompilery progr. jazyků celkem běžně zahazují spočtené hodnoty, pokud nejsou dale využívány.
Tímto bych rád poděkoval za odpovědi+vstříctnost a toto téma/vlákno uzavřel. Nenech se mnou nadále zdržovat.
Aha, až teraz chápem ako si to myslel. V tom prípade je odpoveď takáto: JE "odstraněn/zkonzumován". Garbage collectorom...
Zobrazeno 6 zpráv z 6.