Portál AbcLinuxu, 8. května 2025 08:17
Ahojte kóderiZdar developere…
Chodi na takoveto geeky a nerdy seslosti vubec nekdo?Já jsem byl ve středu na Prague Lambda Meetupu, ten byl dost fajn. Lidí tam bylo asi 30, z toho jedna nebo dvě ženské.
Tiež by som bol trochu confused keby som písal v takomto jazyku:
Number.MIN_VALUE < 0 // false [] + [] // "" [] + {} // "[object Object]" {} + [] // 0 {} + {} // NaN [7, 3, 5, 11].sort() // [ 11, 3, 5, 7 ] ",,," == Array((null,'cool',false,NaN,4)) // true typeof NaN // number (nie je to skratka pre Not a Number?) 10000000000000000 == 10000000000000001 // true
Number.MIN_VALUE < 0 // false
Tohle je způsobeno tím, že Number.MIN_VALUE
je nejnižší absolutní/kladná hodnota daného float typu, tj. je to kousíček nad nulou. Název je matoucí. Pokud člověk potřebuje číslo menší než jakýkoli jiný, chce to Number.NEGATIVE_INFINITY
.
[] + [] // ""
[] + {} // "[object Object]"
{} + [] // 0
{} + {} // NaN
Tohle jsou vlastnosti jazyka. Dost divný, ale v zásadě je to jedno, protože člověk stejně obvykle nepotřeuje sčítat pole a objekty...
[7, 3, 5, 11].sort() // [ 11, 3, 5, 7 ]
Řazení je lexikografické, ne numerické. Neintuitivní výchozí chování.
",,," == Array((null,'cool',false,NaN,4)) // true
Může být zjednodušeno na:
",,," == [undefined, undefined, undefined, undefined] // true
Což je prostě vlastnost operátoru == pro string a pole, viz třeba:
"1,2" == [1, 2] // true
Není to zrovna dvakrát intuitivní.
typeof NaN // number (nie je to skratka pre Not a Number?)
Tohle je naprosto v pořádku. "Not a number" se vztahuje k hodnotě, ne k typu. Viz třeba nan v C++, taky je to číselný typ. NaN je součástí definice IEEE 754 (resp. tam jsou dokonce dva NaNy 10000000000000000 == 10000000000000001 // true
JS používá double
pro reprezentaci čísel. log2(10000000000000000) ≈ 53.151, což o kousek víc, než velikost mantisy double
(53 bitů).
Tohle mi nepřijde jako problém, respektive na problém s konečnou přeností float-like typů a/nebo s konečnou kapacitou integerů narazí člověk tak nebo onak skoro v jakémkoli general purpose jazyce...
na problém s konečnou přeností float-like typů a/nebo s konečnou kapacitou integerů narazí člověk tak nebo onak skoro v jakémkoli general purpose jazyce...Viz třeba podobný problém v C.
Tohle jsou vlastnosti jazyka. Dost divný, ale v zásadě je to jedno, protože člověk stejně obvykle nepotřeuje sčítat pole a objekty...
U jazyka kde mi funkcia môže vrátiť čokoľvek je toto dosť podstatná vlastnosť. Stačí nedopatrením vrátiť pole kde som si myslel že vracia číslo, spočítať to s niečim a chyba sa prejaví o kilometer ďalej. Kým ju nájdem budem mať vytrhané vlasy
Může být zjednodušeno na:
",,," == [undefined, undefined, undefined, undefined] // true
Ešte doplním, že výsledok (null,'cool',false,NaN,4) je 4, preto vytvorí pole 4 undefined
Ešte doplním, že výsledok (null,'cool',false,NaN,4) je 4, preto vytvorí pole 4 undefinedTo mi nepřijde nijak divný, to je prostě comma operator z C/C++... Ale je pravda, že někomu, kdo nepracoval s C/C++, by to asi neintuitivní přijít mohlo.
s konečnou kapacitou integerů narazí člověk tak nebo onak skoro v jakémkoli general purpose jazyce...Python 3? Nekonečná kapacita samozřejmě fyzicky neexistuje, ale nepřekonatelným omezením je pouze velikost paměti a ne nějaké takové směšně malé číslo.
Dost divný, ale v zásadě je to jedno, protože člověk stejně obvykle nepotřeuje sčítat pole a objekty...Jeden z důvodů, proč mít typový systém, pak by se to nemuselo vůbec řešit.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.