436
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 03. 10. 2018, 22:45:34 »
@eee Na něco takového se reaguje opravdu těžce... bolelo to moc?
Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.
Kdyz uz chcete plamennou valku na spatne navrzeny jazyk tak vam poradim treba Perl. Ten vam pripravi tolik dafuq momentu, ze JS zacnete milovat vecnou a nehybouci laskou..<ironie>To říkají jen ti, co si nepřečetli nebo nepochopili jeho dokumentaci!</ironie>
Je navrzen uplne skvele, akorat naucit se ho poradne trva trochu dele nez u jazyku co pindaji na kde co a neumeji delit nulou
Kdyz uz chcete plamennou valku na spatne navrzeny jazyk tak vam poradim treba Perl. Ten vam pripravi tolik dafuq momentu, ze JS zacnete milovat vecnou a nehybouci laskou..
Jestli to není spíš jako jet na motorce a divit se, že tam nejsou pedály :-)Typicky tohle
[1,2,3,15,30,7,5,45,60].sort();
// = [1,15,2,3,30,45,5,60,7]
je volant (řidítka, knipl, cokoliv), co otáčí dopravní prostředek na druhou stranu, než je přirozené a než všichni očekávají.
Na porovnani identity objektu mas operator ===. Na porovnani obsahu objektu mas ==, ale v JS je spatne implementovan. Ale tak hlavne ze porovnava cislo se stringem.Co mi napíše java nebo c# na (volná syntaxe)?:
var x = new object(bla bla bla);
var y = new object(bla bla bla);
(x == y)
taky false, protože neporovnává obsah, ale zda jde o totožný objekt (stejně jako v JS).
=== to nevylepší, protože k předchozímu jen přidá porovnání typu proměnné (zde object).
Proto java i c# na skutečné porovnání obsahu používá .equals() které JS nemá, ale není problém si ho přidat z nějaké knihovny nebo dopsat (anebo použít to výše uvedené porovnání objektů převedených na JSON stringy) .
Proste cim vacsie firmy za tym su, tym to je stabilnejsie, viac toolingu, vsade komercna podpora, ...
Nejai prihlasen nekde jinde? Me to dela kdyz se prihlasim na macu a pak se musim prihlasovat na iphone a pak zase na macu. Rekl bych ze prihlaseni je na prohlizec a povolenych je 1 aktivnich zaznamu...
Proč se mi poslední dobou stává, že se musím při KAŽDÉ návštěvě fóra/webu přihlašovat stále dokola? Především na mobilu v Chrome je to těžce nepříjemné.Pokud za "posledni dobou" beres 10 let, tak to odpovida. Kdybys totiz (nejen) tenhle thread probeh, tak to najdes nejmin nekolikrat. Stejne jako to, ze to zcela pravidelne posila server error.
Sorry, možná se to řadí podle unicode, ale já v tom poli vidím integer ne string..
Zkušený JS programátor v tom vidí string("\x01\x02\x03\x0f\x1e\x07\x05-<"), všechno je to ve specifikaci, nech si ty akademické debaty a uveď nějaký PRAKTICKÝ problém!
Sorry, možná se to řadí podle unicode, ale já v tom poli vidím integer ne string..
Ale já pořád nechápu, co je špatně. To, že "111" == 111 vyhodí true? Naopak se to hodí (když vím, co dělám), pokud to nechci používat / neznám, tak použiji ===.Na té linkované stránce je toho dost, třeba:Kód: [Vybrat][1,2,3,15,30,7,5,45,60].sort();
// = [1,15,2,3,30,45,5,60,7]
The default sort order is according to string Unicode code points.Ale ano, tohle není dvakrát intuitivní.
Ono je sice moc hezké označit nedostatky za featury, ale když s některými "featurami" má tolik lidí problém, je opravdu problém v těch lidech?
Nejde o neznalost, jde o to, že pokud tohle jazyk dělá, tak to může být 1000x napsáno v dokumentaci, ale stále to neznamená, že je to dobrý nápad.
Přesně tak, to si také myslím. Jinak tenhle argument, že "je to přece v dokumentaci", ten se tu bohužel objevuje docela dost často.
Opravdu? Vtip je v tom, že u JS je to *ve standardu*. A to je sakra rozdíl (a buďme za to rádi). Zkus si programovat v C/C++ jen jak tě napadne, kašli na dokumentaci/standard, bo to přece není argument.
Já beru, že je to v dokumentaci, a že je to ve standardu. Ale právě proto, to tam už zůstane, nikdo to neopraví. Považuju to za chybu návrhu, zatímco se Javascript tváří jednoduše, tak ve skutečnosti je to samý špek. A i když zkušený programátor bude o všech podobných výjimkách vědět, a budou popsané v té dokumentaci, tak se ty chyby nikam neztratí. A narazí se na ně právě v praxi, i když se počítají triviální věci...
Uz umi js formatovani retezcu a cisel?ne, ale řetězec a číslo je v javascriptu totéž:
"111" == 111; -> true
:-)
Nie, nie je. Typeof "111" je reťazec, typeof 111 je číslo. A že nevieš, sa pri porovnaní nekompatibilných typov najprv vykoná implicit coercion, je tvoja neznalosť, nie problém s JS.
Ale kazdej takovej jazyk je pak nebezpecnej svetu, protoze se realne *NEDA* otestovat, jak to bude spolehlive. Leda mit na kazdem tretim radku force typuTo plati i pro PHP (== vs ===). Nesouhlasim, ze to je o 'nevim'. Je, dle meho, zasadni problem. Nechtel bych, aby muj zivot (treba nekde v aute
zavisel na tom, jestli se nahodou neco (ne)povede. Z meho pohledu: to co selze pokazdy je o 10 radu lepsi, nez to co selze 'nekdy'. Treba kvuly zapomenutymu testu na '.' nekde kdesi naprosto jinde v kodu (a je z toho hnedle float)
Kolemjdouci
Nejde o neznalost, jde o to, že pokud tohle jazyk dělá, tak to může být 1000x napsáno v dokumentaci, ale stále to neznamená, že je to dobrý nápad.
Přesně tak, to si také myslím. Jinak tenhle argument, že "je to přece v dokumentaci", ten se tu bohužel objevuje docela dost často.