Beregn total med rabatt i JavaScript
I koden du oppga, er det noen problemer som kan anses som "upassende" eller suboptimale:
1. Manglende `retur`-setning: Funksjonen `calculate_total()` returnerer ikke noe, noe som betyr at den vil returnere `undefined` som standard. Du bør legge til en `retur`-setning på slutten av funksjonen for å spesifisere hvilken verdi den returnerer.
2. Ubrukte variabler: Variabelen "rabatt" er tildelt en verdi, men blir aldri brukt. Du bør fjerne den ubrukte koden for å unngå forvirring og gjøre koden mer lesbar.
3. Magiske tall: Koden bruker hardkodede verdier som `10` og `50` uten noen forklaring eller dokumentasjon. Det ville v
re bedre å bruke navngitte konstanter eller variabler for å gjøre koden mer lesbar og vedlikeholdbar.
4. Kompleksitet: Koden har flere nestede 'if'-setninger, noe som kan gjøre det vanskelig å forstå og feilsøke. Du kan forenkle koden ved å konsolidere noen av betingelsene i en enkelt `if`-setning eller bruke en `switch`-setning.
5. Manglende feilhåndtering: Koden håndterer ikke feil dersom brukeren legger inn en ugyldig verdi for rabattprosenten. Du bør legge til feilhåndtering for å sikre at funksjonen håndterer uventede inndata elegant.
Her er en oppdatert versjon av koden som løser disse problemene:
```javascript
function calculate_total(pris, rabatt) {
const DISCOUNT_PERCENTAGE = 0.1; // definer en konstant for rabattprosenten
if (rabatt === udefinert || rabatt < 0 || rabatt > 100) {
throw new Error('Ugyldig rabattverdi');
}
const total = price * (1 - (DISCOUNT_PERCENTAGE * rabatt));
returner totalt;
}
```



