8. februar 2026

Sammenligning

Vi kender mange sammenligningsoperatorer fra matematik.

I JavaScript skrives de sådan her:

  • Større end/Mindre end: a > b, a < b.
  • Større end eller lig med/Mindre end eller lig med: a >= b, a <= b.
  • Lighed: a == b, bemærk at dobbelt lighedstegn == betyder lighedstest, mens et enkelt a = b betyder en tildeling.
  • Ulighed: I matematik er notationen , men i JavaScript skrives det som a != b.

I denne artikel vil vi lære mere om forskellige typer sammenligninger, hvordan JavaScript udfører dem, og vigtige ting at være opmærksomme på.

Til sidst vil du få en opskrift til at undgå problemer relateret til “JavaScript quirks”.

Boolean er resultatet

Alle sammenligningsoperatorer returnerer en boolean værdi:

  • true – betyder “ja”, “korrekt” eller “sandheden”.
  • false – betyder “nej”, “forkert” eller “ikke sandheden”.

For eksempel:

alert( 2 > 1 );  // true (correct)
alert( 2 == 1 ); // false (wrong)
alert( 2 != 1 ); // true (correct)

Et sammenligningsresultat kan tildeles en variabel, ligesom enhver anden værdi:

let result = 5 > 4; // assign the result of the comparison
alert( result ); // true

Sammenligning af tekststrenge

For at se, om en tekststreng er større end en anden, bruger JavaScript den såkaldte “ordbogs-” eller “leksikografiske” rækkefølge.

Sagt på en anden måde, sammenlignes tekststrenge bogstav for bogstav.

For eksempel:

alert( 'Z' > 'A' ); // true
alert( 'Glow' > 'Glee' ); // true
alert( 'Bee' > 'Be' ); // true

Algoritmen til at sammenligne to tekststrenge er simpel:

  1. Sammenlign det første tegn i begge tekststrenge.
  2. Hvis det første tegn i den første tekststreng er større (eller mindre) end det tilsvarende tegn i den anden tekststreng, så er den første tekststreng større (eller mindre) end den anden. Vi er færdige.
  3. Ellers, hvis begge tekststrenges første tegn er ens, sammenlignes de andet tegn på samme måde.
  4. Gentag indtil slutningen af en af tekststrengene.
  5. Hvis begge tekststrenge ender ved samme længde, er de lige. Ellers er den længste tekststreng større.

I eksemplet ovenfor når sammenligningen 'Z' > 'A' til et resultat ved det første trin.

Den anden sammenligning 'Glow' og 'Glee' kræver flere trin, da tekststrengene sammenlignes tegn for tegn:

  1. G er det samme som G.
  2. l er det samme som l.
  3. o er større end e. Stop her. Den første tekststreng er større.
Ikke en rigtig ordbog, men Unicode-rækkefølge

Sammenligningsalgoritmen givet ovenfor svarer omtrent til den, der bruges i ordbøger eller telefonbøger, men det er ikke helt det samme.

For eksempel betyder store og små bogstaver noget. Et stort bogstav "A" er ikke det samme som det lille "a". Hvilket er større? Det lille "a". Hvorfor? Fordi det lille bogstav har en større indeks i den interne kodningstabel, som JavaScript bruger (Unicode). Vi vender tilbage til specifikke detaljer og konsekvenser af dette i kapitlet Tekststrenge (Strings).

Sammenligning af forskellige typer

Når værdier af forskellige typer sammenlignes, konverterer JavaScript værdierne til tal.

For eksempel:

alert( '2' > 1 ); // true, string '2' becomes a number 2
alert( '01' == 1 ); // true, string '01' becomes a number 1

For boolean værdier, bliver true til 1 og false til 0.

For eksempel:

alert( true == 1 ); // true
alert( false == 0 ); // true
En sjov konsekvens

Det er muligt, at på samme tid:

  • To værdier er lige.
  • Den ene er true som en boolean og den anden er false som en boolean.

For eksempel:

let a = 0;
alert( Boolean(a) ); // false

let b = "0";
alert( Boolean(b) ); // true

alert(a == b); // true!

Fra JavaScripts synspunkt er dette resultat helt normalt. En lighedstjek konverterer værdier ved hjælp af numerisk konvertering (derfor bliver "0" til 0), mens den eksplicitte Boolean-konvertering bruger et andet sæt regler.

Streng lighed (strict equality)

Et almindeligt lighedstjek == har et problem. Det kan ikke skelne 0 fra false: