JavaScript és a NaN

 ( persicsb | 2019. február 11., hétfő - 16:43 )

Innen indultunk:
https://hup.hu/node/162727#comment-2317890

De meg mindig: ha a szamitasom eredmenye nem ertelmes, arrol azonnal akarok visszajelzest, hogy ne kelljen PHP fele error_get_last() fele szornyusegekkel foglalkozni.

Tovabba arra utaltam, hogy a masik EcmaScript nyelvben ezt meg tudtak oldani ertelmesen, es nem random vannak dolgok elszorva a nevterben, hanem normalisan rendezve vannak hierarchikusan...

https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Number.html

Mi olyan specialis a "nem vagyok szam" ertekben, hogy nemhogy kulon erteket kell neki adni, de egyes nyelvek szerint ugyanolyan fontos fogalom, mint mondjuk a kulcsszavak, vagy a beepitett fuggvenyek, hiszen ugyanazon az absztrakcios szinten erheto el, mint azok?

Ugye tudod, hogy az EcmaScriptben történelmi okokból a NaN része a globális névtérnek, és a Number objektumnak is?
Az ActionScript 3, mivel EcmaScript variáns, ezt ugyanúgy használja: https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/package.html#NaN
A NaN ugyanúgy része a globális névtérnek itt is, ezt benézted.

És ne keverjük a kulcsszavakat a globális névtérben lévő, a standard runtime részét képező azonosítókkal. Totál más nyelvi elemek. A beépített függvények meg nem a nyelv, hanem a standard runtime részei.

Az a speciális a NaN értékben, hogy egyrészt definiálja a szabvány, érvényes bitminta IEEE-754 szerint, emiatt jó, ha egy nyelvben a nevén tudod nevezni ezt a bitmintát mint értéket.

Másrészt ha van egy nagyon hosszú számítási láncod, akkor azt, hogy akár kerekítés miatt, akár más miatt az egyik lépésben értelmetlen lett a számítás, kétféleképpen kezelheted:
- az egyik esetben minden számítási lépésben ellenőrzöd, hogy az eredmény érvényes-e.
- a másik esetben hagyod, hogy a létrejött NaN szépen végigmenjen a rendszeren, úgy sem tudsz mit csinálni, az adott inputból mindenképp NaN lesz a számítás során.

Az első eset szép, és pedáns, csak hatalmas overheadje van. A második eset nem szép, nem pedáns, de nagyon gyors.
És mindkét esetben ugyanazt az információt kapod meg: az inputod nem jó.