Problémy s JavaScript v praxi

Pep

Re:Problémy s JavaScript v praxi
« Odpověď #90 kdy: 27. 09. 2018, 17:06:40 »
Ako vidím, žiadna zmena. Stále sem vypisujú predovšetkým lopaty a len málo reálnych web developerov. Lopaty ktoré doteraz všetky stránky generujú na serveri a loose coupled architektúry im nič nehovoria a v živote by nedokázali nakódiť SPA, či nebodaj rovno PWA apku. Čo sa divím, lebo ešte aj Vaadin začal používať web komponenty na frontende, konkrétne Polymérové a aj podľa Java developerov to značne uľahčuje a urýchľuje vývoj. Ale tak zdá sa, že nie len mentálne, ešte aj znalostne ste pozadu. Čo už, väčší priestor pre uplatnenie, vlastne dík...
Tvoje loser coupled “architektury” nikoho nezajímají :p


asd

Re:Problémy s JavaScript v praxi
« Odpověď #91 kdy: 27. 09. 2018, 17:14:41 »
Citace
Javascript nemá forEach

Kód: [Vybrat]
const arr = [1, 2, 3];
const obj = {a: 1, b: 2, c: 3};
const str = '123';
const set = new Set([1, 2, 3]);
const map = new Map([[0, 1], [1, 2], [2, 3]]);

Object.entries(obj).forEach(([key, value]) => {
  console.log(key, value);
});
arr.forEach((value, key) => {
  console.log(key, value);
});
Array.from(str).forEach((value, key) => {
  console.log(key, value);
});
Array.from(set).forEach((value, key) => {
  console.log(key, value);
});
map.forEach((value, key) => {
  console.log(key, value);
});


Jinak je samozřejmě k dispozici for, for in a for of.

Trollopata

Re:Problémy s JavaScript v praxi
« Odpověď #92 kdy: 27. 09. 2018, 17:31:36 »
Mám rád podobenství. Představme si automobil, kterému funguje volant naopak, při otočení doprava zatočí doleva. Pro všechny lidi je to problém, jen pro Vlada je to v manuálu popsaná featura. Vlado je z těch programátorů, kteří si nepřipouští, že jeho programy mají nedostatky, resp. se jich zbavuje tím, že je popíše v manuálu.
Úplně přesně totéž napadlo mě ;-)

eee

Re:Problémy s JavaScript v praxi
« Odpověď #93 kdy: 27. 09. 2018, 17:40:16 »
Nebo tohle taky pobaví:

var a = [1,2,3];
var b = [1,2,3];

a == b // false

A co je na tom divného?
V JS je pole objekt.
Porovnáním object == object jen otestuješ, jestli jde o tentýž objekt (proto a == a vrátí true).
JS bohužel nemá žádnou metodu nebo funkci na porovnání obsahu dvou objektů, ale pro běžné případy se to dá vcelku jednoduše obejít: :) (nebo si na to napsat plnohodnotnou metodu na porovnání)
JSON.stringify(a) == JSON.stringify(b); // true
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.

asd

Re:Problémy s JavaScript v praxi
« Odpověď #94 kdy: 27. 09. 2018, 17:41:38 »
Jestli to není spíš jako jet na motorce a divit se, že tam nejsou pedály :-)


yrhdrh

Re:Problémy s JavaScript v praxi
« Odpověď #95 kdy: 27. 09. 2018, 17:45:06 »
Citace
Javascript nemá forEach

Kód: [Vybrat]
const arr = [1, 2, 3];
const obj = {a: 1, b: 2, c: 3};
const str = '123';
const set = new Set([1, 2, 3]);
const map = new Map([[0, 1], [1, 2], [2, 3]]);

Object.entries(obj).forEach(([key, value]) => {
  console.log(key, value);
});
arr.forEach((value, key) => {
  console.log(key, value);
});
Array.from(str).forEach((value, key) => {
  console.log(key, value);
});
Array.from(set).forEach((value, key) => {
  console.log(key, value);
});
map.forEach((value, key) => {
  console.log(key, value);
});


Jinak je samozřejmě k dispozici for, for in a for of.
forEach v JS není konstrukt ale metoda (tzn objekt) a průběh se určuje přes callback. Neříkám že to je vyloženě špatně, ale pro mě to snižuje užitnost jazyka.

eee

Re:Problémy s JavaScript v praxi
« Odpověď #96 kdy: 27. 09. 2018, 17:49:25 »
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í.

asd

Re:Problémy s JavaScript v praxi
« Odpověď #97 kdy: 27. 09. 2018, 17:52:25 »
Citace
Na porovnani identity objektu mas operator ===. Na porovnani obsahu objektu mas ==

V JS se objekty porovnávají striktně. Operátor === jenom vynechává konverze. Jak a tak b jsou objekty, proto je úplně jedno, jestli použiješ == nebo ===.

Phi

Re:Problémy s JavaScript v praxi
« Odpověď #98 kdy: 27. 09. 2018, 17:53:41 »
Nebuďte tak krutý, někdo ty preplacane weby dělat musí :)

agent

Re:Problémy s JavaScript v praxi
« Odpověď #99 kdy: 27. 09. 2018, 17:54:49 »
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) .

asd

Re:Problémy s JavaScript v praxi
« Odpověď #100 kdy: 27. 09. 2018, 17:56:57 »
Citace
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í.

Já vás svým způsobem chápu, ale "je to trochu jinak, než jinde a já jsem líný si přečíst dokumentaci" je takový dost slabý argument. To nevztahuju jenom na JavaScript, ale celkově.

Re:Problémy s JavaScript v praxi
« Odpověď #101 kdy: 27. 09. 2018, 18:00:52 »
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í.

Protože řadí lexikograficky...? Většinou očekávám, že výsledek lexikografického sortu, bude lexikograficky seřazený vstup...

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) .


TYVOGO, Java to má taky špatně a jinak, než všichni čekají!  :o ;D ;D

agent

Re:Problémy s JavaScript v praxi
« Odpověď #102 kdy: 27. 09. 2018, 18:02:09 »
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í.
Když na to narazíš poprvé, zjistíš si, že pro čísla je správná syntaxe např:
[1,2,3,15,30,7,5,45,60].sort((a, b) => (a - b));
a příště už to neřešíš a jen používáš.

Já bych to uzavřel - kdo vidí JS poprvé (asi většina z přítomných), toho spousta věcí překvapí, kdo v něm pracuje pravidelně, tak automaticky píše syntaxi tak, aby to fungovalo správně.

Youda

Re:Problémy s JavaScript v praxi
« Odpověď #103 kdy: 27. 09. 2018, 18:58:35 »
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í.
Když na to narazíš poprvé, zjistíš si, že pro čísla je správná syntaxe např:
[1,2,3,15,30,7,5,45,60].sort((a, b) => (a - b));
a příště už to neřešíš a jen používáš.

Já bych to uzavřel - kdo vidí JS poprvé (asi většina z přítomných), toho spousta věcí překvapí, kdo v něm pracuje pravidelně, tak automaticky píše syntaxi tak, aby to fungovalo správně.

To je k bliti, rovnak na ohybak.

Osobne nechapu tuhle modu, jednou za cas vytahnout na svetlo sracku, ktera neresi davno vyresene zaklady a stavet na tom hype.
Kdyz nekdo navrhuje _NOVY_ jazyk, ocekaval bych, ze na tom bude lip, nez jazyky 20 let stare postavene na urovni computer science 80tych let...



jouda

Re:Problémy s JavaScript v praxi
« Odpověď #104 kdy: 27. 09. 2018, 19:25:08 »
Treba takove dinosauri cecko (resp jeho kompilery) za poslednich 20 let na kazdou jen trochu nebezpecnejsi nebo nejednoznacnejsi vec zacaly hazet warningy, ale jak koukam tak moderni trend je opacny, vynadat chudakovi nezkusenemu programatorovi do lam, lopat a at si precte dokumentaci.

BTW: Kdyz procitam povysenecke reakce Vlada na prvnich dvou strankach, opravdu rad bych videl nejaky jeho produkt. Byla by nejaka ukazka?