What is an example of a switch in JavaScript?

JavaScript Switch: En Komplet Guide

24/03/2001

Rating: 4.63 (11607 votes)

I JavaScript er det ofte nødvendigt at træffe beslutninger i koden baseret på forskellige betingelser. Betingede sætninger er fundamentale for at kunne styre flowet i et program, så det kan udføre forskellig kode afhængigt af situationen. En af de mest effektive strukturer til dette formål er switch-sætningen. Den giver en mere beskrivende og ofte renere måde at sammenligne en enkelt værdi med flere mulige varianter, og den kan i mange tilfælde erstatte en lang række af if-else-tjek, hvilket gør koden mere organiseret og læsbar.

Should I use a switch statement or object literal in JavaScript?
While switch statements are fundamental to JavaScript, modern alternatives like object literals can sometimes provide even cleaner solutions: Both approaches are valid, and choosing between them depends on your specific use case and coding style preferences.
Indholdsfortegnelse

Hvad er en Switch-sætning i JavaScript?

En switch-sætning er en kontrolflowstruktur, der tillader en udvikler at udføre forskellige kodeblokke baseret på værdien af et givent udtryk. Man kan tænke på det som en mere specialiseret og struktureret form for en if-else if-else-kæde. Du angiver et udtryk, som evalueres én gang, og derefter sammenlignes resultatet med værdien af hver case-etiket. Hvis der findes et match, udføres den tilhørende kodeblok.

Grundlæggende Syntaks

Syntaksen for en switch-sætning er ligetil og består af flere nøglekomponenter:

switch (udtryk) { case værdi1: // Kode der udføres, hvis udtryk === værdi1 break; case værdi2: // Kode der udføres, hvis udtryk === værdi2 break; // Flere cases kan tilføjes efter behov default: // Kode der udføres, hvis ingen af de ovenstående cases matcher }
  • switch (udtryk): Dette er den værdi eller det udtryk, du vil evaluere. Det kan være en variabel, et tal, en streng eller et mere komplekst udtryk.
  • case værdi: Hver case repræsenterer en mulig værdi, som udtryk kan have. Værdien i en case sammenlignes med resultatet af udtryk ved hjælp af en streng lighedskontrol (===), hvilket betyder, at både værdi og type skal matche.
  • break: Dette nøgleord er afgørende. Det afslutter switch-sætningen og forhindrer koden i at fortsætte med at køre ind i den næste case. Glemmer man break, opstår en såkaldt "fall-through"-effekt.
  • default: Denne blok er valgfri. Koden i default-blokken udføres, hvis ingen af de specificerede case-værdier matcher udtrykket. Det fungerer som en "catch-all" eller en else-blok.

Sådan Fungerer Switch-sætningen i Praksis

Lad os se på et simpelt eksempel for at illustrere, hvordan det virker. Forestil dig, at vi har en variabel a, og vi vil udføre forskellig kode baseret på dens værdi.

let a = 2 + 2; switch (a) { case 3: alert('For lille'); break; case 4: alert('Præcis!'); break; case 5: alert('For stort'); break; default: alert('Jeg kender ikke den værdi'); }

Her sker følgende:

  1. Udtrykket a (som er 2 + 2) evalueres til 4.
  2. Switch-sætningen sammenligner 4 med den første case: case 3. Der er intet match.
  3. Den fortsætter til den næste: case 4. Her er der et match!
  4. Koden i case 4-blokken udføres, og alert('Præcis!') vises.
  5. Nøgleordet break stødes på, og eksekveringen af switch-sætningen afsluttes med det samme. Koden efter switch-blokken fortsætter.

Vigtigheden af `break` og "Fall-Through"

Hvad sker der, hvis vi udelader break? Uden break vil eksekveringen "falde igennem" til de efterfølgende case-blokke, uanset om de matcher eller ej, indtil den enten rammer et break eller slutningen af switch-sætningen. Dette kan være en kilde til fejl, men kan også udnyttes bevidst.

Se dette eksempel uden break:

let a = 2 + 2; switch (a) { case 3: alert('For lille'); case 4: alert('Præcis!'); case 5: alert('For stort'); default: alert('Jeg kender ikke den værdi'); }

I dette tilfælde, efter at case 4 matcher, vil alle de efterfølgende alerts blive vist sekventielt: 'Præcis!', 'For stort', og 'Jeg kender ikke den værdi'. Det er sjældent den ønskede adfærd, så husk altid at inkludere break, medmindre du bevidst ønsker at gruppere cases.

What is the default case in a switch statement in JavaScript?
The default case in a switch statement JavaScript executes when none of the case values match the expression. It is similar to the else block in an if-else statement in JavaScript. Let’s understand the default case with an example: Example: Displaying a message according to the weather. Output:

Avancerede Teknikker

Gruppering af Cases

En almindelig og nyttig teknik er at gruppere flere case-blokke for at udføre den samme kode. Dette gøres ved at stable dem oven på hinanden uden break imellem.

let dag = new Date().getDay(); // Returnerer 0 for søndag, 1 for mandag, osv. let dagType; switch (dag) { case 0: // Søndag case 6: // Lørdag dagType = 'Weekend'; break; default: dagType = 'Hverdag'; }

Her vil både case 0 og case 6 resultere i, at variablen dagType sættes til 'Weekend', fordi eksekveringen fra case 0 falder igennem til case 6, hvor koden og det afsluttende break findes.

Brug af Udtryk i `switch` og `case`

Både switch-udtrykket og case-værdierne kan være vilkårlige udtryk, ikke kun simple værdier. Dette giver en høj grad af fleksibilitet.

let a = "1"; let b = 0; switch (+a) { // +a konverterer strengen "1" til tallet 1 case b + 1: alert('Denne kode kører, fordi +a er 1, hvilket er lig med b+1'); break; default: alert('Denne kode kører ikke'); }

Her evalueres +a til tallet 1. Derefter evalueres b + 1 i case-blokken også til 1. Da 1 === 1 er sandt, udføres koden.

How does a logical OR operator work in JavaScript?
Hope this question will be useful for someone. The code in Example 1 works because you switch on the variable foo which is set to 0. The code in the first case is evaluated to 0: This value gets compared to foo which is 0 and so the JS code enters the first case. In JavaScript logical OR operators always return the first "truthy" value.

Switch vs. If-Else: Hvornår skal man bruge hvad?

Både switch og if-else bruges til at træffe beslutninger i kode, men de har forskellige styrker. Valget afhænger ofte af situationen og personlig præference for læsbarhed.

Sammenligningstabel

EgenskabIf-ElseSwitch
Grundlæggende brugBruges til at tjekke, om en eller flere betingelser er sande eller falske.Bruges til at sammenligne en enkelt værdi mod flere mulige cases.
Bedst egnet tilKomplekse logiske betingelser, sammenligninger af intervaller (f.eks. score > 90).Faste, diskrete værdier som tal eller strenge (f.eks. HTTP statuskoder, ugedage).
YdeevneKan være langsommere, hvis der er mange else if-tjek, da hver betingelse evalueres sekventielt.Kan i nogle browsere være hurtigere, da det kan optimeres til et opslag i en tabel.
BetingelsestypeKan evaluere enhver form for betingelse, der returnerer true eller false.Tjekker kun for streng lighed (===).
StandardhåndteringBruger en afsluttende else-blok til at håndtere tilfælde, hvor ingen betingelser er opfyldt.Bruger den valgfrie default-blok til at håndtere uoverensstemmende værdier.

Generelt set, hvis du tjekker en enkelt variabel mod en række specifikke værdier, er en switch-sætning ofte mere læsbar og struktureret. Hvis du har brug for at evaluere komplekse logiske udtryk eller intervaller, er if-else det bedste valg.

Ofte Stillede Spørgsmål (FAQ)

Hvad er 'default'-casen til for?

default-casen fungerer som et sikkerhedsnet. Den udføres, når værdien af switch-udtrykket ikke matcher nogen af de specificerede case-værdier. Det er god praksis at inkludere en default-case for at håndtere uventede værdier eller fejl og for at gøre din kode mere robust.

Hvad sker der, hvis jeg glemmer 'break'?

Hvis du glemmer et break-statement, vil koden fortsætte med at eksekvere ned gennem de efterfølgende case-blokke, indtil den enten finder et break eller når slutningen af switch-sætningen. Dette kaldes "fall-through" og kan føre til uventede resultater.

What is an example of a switch in JavaScript?
An example of switch (the executed code is highlighted): Here the switch starts to compare a from the first case variant that is 3. The match fails. Then 4. That’s a match, so the execution starts from case 4 until the nearest break. If there is no break then the execution continues with the next case without any checks. An example without break:

Kan jeg bruge et objekt som et alternativ til switch?

Ja, i moderne JavaScript er det blevet populært at bruge et objekt-literal som et alternativ til simple switch-sætninger, især når man mapper en værdi til en anden. Dette kan gøre koden endnu mere koncis.

const getDyrelyd = (dyr) => { const lyde = { hund: 'vov', kat: 'miav', ko: 'muh' }; return lyde[dyr] || 'Ukendt lyd'; }; console.log(getDyrelyd('kat')); // Output: miav

Denne tilgang er elegant for simple opslag, men switch-sætningen er stadig mere fleksibel, når der skal udføres mere komplekse kodeblokke for hver case.

Konklusion

JavaScript switch-sætningen er et kraftfuldt og vigtigt værktøj til at håndtere flere betingelser baseret på en enkelt værdi. Den kan gøre din kode mere organiseret, læsbar og effektiv sammenlignet med lange if-else-kæder. Ved at forstå dens syntaks, vigtigheden af break og default, og hvornår den er det rette valg, kan du skrive bedre og mere vedligeholdelsesvenlig kode. Husk altid at inkludere et break-statement, medmindre du bevidst ønsker "fall-through"-adfærd, og overvej at bruge default-casen til at håndtere uventede scenarier.

Hvis du vil læse andre artikler, der ligner JavaScript Switch: En Komplet Guide, kan du besøge kategorien Sundhed.

Go up