parceInt bruger octet som standard
Man må bare elske den måde hvorpå parseInt virker på. Ikke så meget vrøvl – bare resultater.
var width = parseInt(“153px”);
giver helt som forventet: 153. Ingen behov for at fjerne enheder fra strengen først, som i c#. Det virker bare.
Men hvad sker der så når man prøver med:
var id = parseInt(“009”);
Man får “0” – det viser sig nemlig at parseInt bruger octet som udgangspunkt, og det første tal fra systemet er “0”, da 9 jo ikke er et tal i octet, ignoreres det blot, som var det en hvilken som helst anden enhedsangivelse. Man kan tvinge 10-talsystemet ved at angive radix:
var id = parseInt(“009”, 10);
En streng er ikke en streng
Ikke alle er klar over at JavaScript faktisk kan representerer en streng på to forskellige måder: Som en primitiv og som et objekt.
var a = "Jeg er en primitiv";
var b = new String("Jeg er et objekt");
alert(typeof a == typeof b); // Vil alerte 'false'
Hvis man har kode der laver type-check, kan man altså ikke bare nøjes med:
if (typeof var1 == "string")
...
DOM id’er
Brug ikke DOM id’er som variabelnavn. Det giver “object undefined” fejl i IE. Brug namespacing…
Replace er ikke global
Hvis du vil foretage en udskiftning af karakterer i en streng, skal du bruge en RegExp som parameter, ellers er det kun første forekomst der udskiftes:
var headline = "Min overskrift på artiklen";
var itemname = headline.replace(" ", "_");
// Giver: Min_overskrift på artiklen
var itemname = headline.replace(/ /g, "_");
// Giver: Min_overskrift_på_artiklen
Coder on..