« 1 2
Autor Zpráva
_es
Profil
JavaScript by sa mal správne písať s veľkým s.
Nemalo by sa to opraviť, v názve sekcie diskusie a inde?
Chamurappi
Profil
Reaguji na _es:
Ty mi čteš myšlenky, ne? Přesně o tomhle jsem zrovna včera také přemýšlel :-)
Nemyslím, že to někomu vadí, když nám trvalo několik let, než jsme si to uvědomili. Ale asi to opravím. Alespoň v tom názvu kategorie.
Moderátor Chamurappi: Název kategorie opraven.
_es
Profil
V odstavci Rozdíl mezi voláním funkce a funkcí v názornom kóde, by sa zišlo v komentároch nejako výrazne označiť príklad zlého kódu, teda riadky 5 a 7.
Witiko
Profil
S přívalem fanoušků jQuery v poslední době mi přijde jako dobrý nápad přidat do naší FAQ sekce odstavec pro tento framework nebo frameworky všeobecně nechceme-li být zaujatí. Problémem je naprostá a dokonalá nepoznamenanost javascriptem části tazatelů, což je v případě právě jQuery knihovny ještě markantnější, protože ta se cíleně snaží stylem výsledného kódu budit dojem nesounáležitosti s javascriptem.

Obsahem by mělo především být právě seznámení s faktem, že framework mávnutím kouzelné hůlky nezmění jazyk, ve kterém je kód psaný a že se stále jedná o javascript ( Viz.: tento nebo třeba tenhle příspěvek).

Stejně tak by určitě nebylo od věci zmínit v FAQ tento topic zabývající se strukturou kódu výše zmíněného frameworku. Pochopení struktury napomáhá porozumění funkčnosti a funkce.
_es
Profil
Witiko:
Ďalší prípad.
Možno by mohol Chamurappi navrhnúť nejaký text, ktorý by po pripomienkach prípadne ešte upravil.
Witiko
Profil
_es:
http://diskuse.jakpsatweb.cz/?action=vthread&forum=8&topic=120439#11
Chamurappi
Profil
Reaguji na Witika a _es:
Tak jsem něco sestavil.
_es
Profil
Chamurappi:
„Na živé ukázky skutečných potíží s jQuery se hodí jQuery zkoušečka od ah01.“
Dá sa to aj pomocou http://jsfiddle.net/, ten umožňuje aj vytvorenie odkazu s kódom aj použitie iných knižníc.
Mohlo by sa spomenúť aj to, že tak, ako riešenie niektorých nekompatibilít prehliadačov jQuery zjednoduší, tak môže aj niekedy nekompatibility vyrobiť.
Witiko
Profil
Možná se setkám s všeobecným nesouhlasem, ale navrhnul bych pozměnění takřka demagogicky znějící sekce o příkazu eval, a to možná i včetně titulku. Mám totiž za to, že naší snahou by, spíše než vyvolání odporu k dané funkci bez vysvětlení, mělo být vypíchnutí problémových bodů dané funkce.

Nevýhodami příkazu eval a jeho sourozenců je následující:
» Výkon - Zvlášť je-li kód předem kompilovaný, může být volání kompilátoru uprostřed kódu celkem znatelné.
» Nebezpečí injekce - Nicméně na straně klienta je toto takřka bezzubé, jelikož útočník může postihnout jen u klienta zobrazený obsah. Při serverovém využití jazyka (node.js) by to pak byla obava reálnější.
» Problémy s debugováním - Toto bych označil jako problém sestavení dat předávaných funkci spíše než problém funkce jako takové, nicméně v případech neznalosti kódu a tedy nemožnosti zaručit jeho proveditelnost jde o legitimní obavu.
» Intervaly, timeouty, new Function - Ne skutečná nevýhoda evalu, spíše nevědomost kodérů, kteří si zbytečně ztěžují práci. Stejně jako na eval se na metody vztahují případy správného použití, žel ty tu v otázkách většinou nevídáme.

Pokud si je uživatel těchto nevýhod vědom namísto toho, aby měl z funkce iracionální hrůzu, může se pak setkat s případy, kdy má eval i legitimní využití a správně je rozeznat. Takovými případy je například parsování JSONu v prostředí bez nativní podpory objektu JSON, nebo například předávání a parsování aplikačního výstupu mezi dvěmi běžícími aplikacemi, které spolu nemohou sdílet reference (Web Workers).

Nikdo netvrdí, že příležitosti ke správnému použití funkce nejsou zřídkavé, nicméně mezi nízkou využitelností / vaností a neužitečností je myslím jasný rozdíl.
Witiko
Profil
Například zde je jedna z obětí místního FAQ. :-)
Chamurappi
Profil
Reaguji na Witika:
Při serverovém využití jazyka (node.js)
… možná reálněji spíš staré ASP.

takřka demagogicky znějící sekce o příkazu eval
Máš pravdu, že současná verze víc straší než vysvětluje, ale žádná lepší slova mě nenapadla. Vlastně mě nenapadla vůbec žádná slova, proto jsem si vypůjčil ta od ah01.

K nevýhodám:
» Výkon – začátečníky moc nezajímá.
» Nebezpečí injekce – příliš nehrozí a rizika jsou v prohlížeči malá.
» Problémy s debugováním – to, že můžou vzniknout chyby, které se těžko hledají, tam už zmíněno je.
» Intervaly, timeouty, new Function – to, že si tím tvůrci přidělávají práci a že se zamotávají v uvozovkách, tam také zmíněno je.

Myslím, že odpor odborné veřejnosti k evalu je způsoben především samotnou konstrukcí jazyka a že má část rysů společných s odporem ke goto v jiných jazycích. JavaScript je stavěný tak, aby programátor při běžné práci eval nepotřeboval. Nebývá rozumné ho používat, lidi ho používají z neznalosti rozumnějších postupů, vytvářejí tím nevýkonný a nebezpečný, ale hlavně méně přehledný a hůř udržovatelný kód. Stručně vzato… je to zlo.

může se pak setkat s případy, kdy má eval i legitimní využití a správně je rozeznat
V tu chvíli už by mohl mít dostatečný nadhled a přehled o JS, aby dokázal racionálně vyhodnotit situaci. Zbytečné používání evalu je mnohonásobně častější než strach z legitimního použití evalu — proto si myslím, že ten strach lze v soupisu častých potíží zanedbat.
Witiko
Profil
Chamurappi:
V tu chvíli už by mohl mít dostatečný nadhled a přehled o JS, aby dokázal racionálně vyhodnotit situaci.
Ideálně. Často však vídám naprostou evalofóbii i u lidí, kteří mají s platformou letité zkušenosti. Neříkám, že je to špatná věc, eval je skutečně zřídkakdy optimálním řešením. Jsem však přesvědčený, že každý odpor k něčemu by měl být opodstatněný, založený na racionální úvaze a zhodnocený kritickým myšlením.

Máš pravdu, že současná verze víc straší než vysvětluje, ale žádná lepší slova mě nenapadla.
Já bych alespoň přihodil někam na konec poznámku o parsování JSONu pro starší prohlížeče nebo o možnosti tvorby předkompilovaných funkcí (to je zrovna podle mě poměrně zajímavé využití). Jednoduše aby byl uveden i fakt, že jsou vzácné chvíle, kdy je použití ošklivého evalátka nejvhodnějším řešením. Bral bych to jako naši povinnost u fóra, které je znalostní databází a startovním bodem při psaní stránek pro tolik lidí, kteří - nemaje dostatek znalostí - alespoň ze začátku musí nekriticky věřit všemu, co zde naleznou.
Chamurappi
Profil
Dospěl jsem k závěru, že Univerzální funkce pro AJAX vypadá docela dlouze. Část programátorů, kteří jinak JS docela zvládají, se zbytečně uchyluje k frameworkům především kvůli tomu tajemnému AJAXu — předpokládají, že to je velká věda, ačkoliv skript na nejčastější činnost jde napsat zpaměti a je už sám o sobě z hlediska kompatibility prohlížečů universální (vyjma konstruktoru). Mám chuť napsat návod na AJAX. Nebo spíš obecně na komunikaci klient → server, protože jsem na toto téma nenašel žádné ucelené shrnutí… nebo hledám špatně? (Pak také přemýšlím, kam ho napsat.)


Reaguji na Witika:
Doplnil jsem nepříliš konkrétní zmínku o vzácných případech.
Taps
Profil
Možná by nebylo na škodu přidat do FAQ tuto stránku http://youmightnotneedjquery.com/ . Je na ní přehled alternativ klasického javascriptu oproti JQuery. Začátečníkům by se to mohlo hodit.
Str4wberry
Profil
Je otázka, jestli je horší používat jQuery nebo nepodporovat IE 7/8. Spíš bych řekl, že často to druhé.

Hlavní výhoda pro začátečníky je u „staré větve“ jQuery právě srovnání rozdílů napříč prohlížeči. Stránka mi tedy přijde spíš pro pokročilé, kteří znají / jsou ochotni zkoumat odlišnosti v jednotlivých jádrech.
juriad
Profil
Nelíbí se mi to. Ukazuje několik příkladů, které samy o sobě nejsou použitelné.
V některých ukázkách se autor snaží řešit kompatibilitu s IE8 a jinde ji prostě zahodí.
Nejvíce mi na tom webu vadí, že skoro u všeho píše IE8+, i když to fungovalo už dlouho před IE8.

Pro mě by byl zajímavější přehled toho, co vlastně jQuery ve svých metodách skutečně volá. (Potřebuju přidat element, ale neznám DOM API.)
Řeší to use case: najdu řešení používající jQuery, které já nechci používat, a zajímá mě, jak to zjednodušeně implementovat sám.
Nemusel bych procházet zdrojáky jQuery a přemýšlet o tom, jak se nepotřebného balastu zbavit.
Chamurappi
Profil
Reaguji na juriada:
Pro mě by byl zajímavější přehled toho, co vlastně jQuery ve svých metodách skutečně volá.
To zní jako vynikající nápad, znamenám si…


Reaguji na Tapse:
Projel jsem to jen zběžně (je to dost nepřehledné, protože autor používá v mém prohlížeči neexistující elementy) a narazil jsem tam třeba na toto zjišťování, jestli je proměnná pole:
isArray = Array.isArray || function(arr) {
  return arr.toString() == '[object Array]'
}
To jako vážně? Pole při převodu na řetězec provádí pole.join(","), takže pokud v poli není právě jedna položka obsahující řetězec "[object Array]", tato funkce isArray selže všude tam, kde není Array.isArray. Docela nebezpečné.
_es
Profil
K téme Časté potíže, zajímavosti a poučné debaty » Výsledkem výpočtu 1 - 0.9 není přesně 0.1 by mohlo byť pridané, ako daný problém vyriešiť. Buď vhodným zaokrúhlením výsledku (so zdôraznením, že len výsledku, nie medzivýsledkov, no zriedkavo by možno sa mohlo hodiť aj zaokrúhlenie užívateľských vstupov ( Pripocitavanie a odpocitavanie)), alebo s počítaním s najmenšími možnými hodnotami ako celými číslami, napríklad v prípade českých korún rátanie v halieroch.
« 1 2

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: