JavaScript alapok: Sztringből egész szám
A választások estéjén az Indexen követtem az eseményeket, mikor egyszer csak felzúgott a laptopom hűtője. Ez azt jelzi, hogy valami elkezdte dolgoztatni a processzort. Körbenéztem és a fejléc alatt futó szövegre kezdtem gyanakodni. Gyorsan bele is néztem a kódba. Az első sornál - ahol egésszé akartak konvertálni egy sztringet - azonban elakadtam.
Ez volt az (bár lehet jobb lenne ha nem is írnám le a rossz példát):Ez az aprócska függvény azzal a céllal készülhetett, hogy a beadott - mértékegységet is tartalmazó - sztring értékből, csináljon valódi egész számot. Pl. "100px"-ra adjon vissza 100-at. A függvény azonban nem egészen ezt csinálja. Egyszerűen visszaadja a beadott sztring utolsó két karakter nélküli részét. Tehát a viszaadott érték típusa továbbra is string lesz. Ez azonban a kisebbik baj. A JavaScript nyelv nem típusos, és általában értelemszerűen tudja kezelni az ilyen helyzeteket. Másik probléma lehet, hogyha véletlenül egy olyan érték kerül bele, ahol a mértékegység csak egy karakteres pl: 100%.
Hogy mégis miért érdemelt blogbejegyzést? Több okból is. A JavaScriptben van egy beépítettA És hogy miért lassítja a görgőszöveg a böngészőt? Mert minden 25 ezredmásodpercben meg van hívva a függvény. Vagyis minden másodpercben 40-szer kéne lefutnia. De így szép folyamatos lesz majd az animáció - szólhatna a válasz. Csakhogy minden gyerek tudja, hogy moziban is csak 24 képkocka jelenik meg másodpercenként, mégis folyamatosnak látjuk a mozgást. Sőt, ennél kevesebb is elég lehet.
■ Ez volt az (bár lehet jobb lenne ha nem is írnám le a rossz példát):
function toint( s ) { return s.substring( 0, s.length - 2 ); }
Hogy mégis miért érdemelt blogbejegyzést? Több okból is. A JavaScriptben van egy beépített
parseInt()
nevű függvény, ami pontosan azt csinálja, mint amire itt szükség van.
var szam = parseInt(szovegesValtozo)
parseInt()
a paraméterként beadott szöveges változónak megfelelő egészt adja vissza. Szépen működik arra az esetre is, ha a számok után esetleg betűk állnának pl. mértékegység.
var hosszSzoveg = "100px";
var hosszSzam = parseInt(hosszSzoveg);
alert("Típus: " + typeof hosszSzam + " érték:" +hosszSzam);
hmm
így okés?
substring: 3235ms
parseInt: 1110ms
sponsored by FireBug :)
üdv t
hoppá
substring: 1484ms
parseInt: 1140ms
valami folyik a háttérben fx-éknél :) , a fenti mérés Firefox Portable 1.5.0.7 -en történt
üdv t
csak épp hátrafele
De...
parseInt
böngészőfüggetlenül gyorsabb, de ezt ki is kéne mérni.Eltörpülő költség
Lehet hiba volt belekeverni a postba a körülményeket. Csak be akartam mutatni a parseInt függvényt, hogy ilyen is van.
Indexnek egyébként nagyon szép kódja van.
na jó
http://celtickane.com/projects/jsspeed.php
http://www.howtocreate.co.uk/browserSpeed.html
stb.
most csak a két függvény érdekelt, IE meg ugye alapból nem :) , mondjuk IE7 határozztan gyorsul(t) http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance ) , ez örmteli lévén a scriptaculous animációi már szépek benne vs IE6 :))
üdv t
zárójelben jegyzem meg, hogy a http://blogsearch.google.com/ sokkal jobb fejlesztési infokerésre mint a sima gugli , ha vki (?) nem ezt használná még
jóhiszeműség
Nem feltételezel kicsit sokat az index.hu-ról? :)
halihó
:D
Ő, nem feltételezek az index.hu-ról semmit. Amúgy a nagyobb portálok általában nem rendelkeznek túl szép kóddal, tisztelet a kivételnek. De ez is csak szubjektív véleményem.
nah minden jót.
j.
Index.hu
egy bosszantó apróság
Ez azért van, mert a nullával kezdődő stringeket automatikusan nyolcas számrendszerbeli számnak feltételezi és ott a 08 illetve a 09 érvénytelen.
Ez főleg akkor tud bosszantó lenne, ha dátumokat akarunk kezelni.
A "hiba" elkerülhető, ha az alábbi két megoldás egyikét használjuk:
decimális, oktális