


Calcular total con descuento en JavaScript
En el código que proporcionó, hay algunos problemas que podrían considerarse "incorrectos" o subóptimos:
1. Falta la declaración `return`: la función `calculate_total()` no devuelve nada, lo que significa que devolverá `indefinido` de forma predeterminada. Debe agregar una declaración `return` al final de la función para especificar qué valor devuelve.
2. Variables no utilizadas: A la variable `descuento` se le asigna un valor pero nunca se usa. Debe eliminar el código no utilizado para evitar confusiones y hacer que el código sea más legible.3. Números mágicos: el código utiliza valores codificados como "10" y "50" sin ninguna explicación o documentación. Sería mejor usar constantes o variables con nombre para que el código sea más legible y fácil de mantener.4. Complejidad: el código tiene múltiples declaraciones "if" anidadas, lo que puede dificultar su comprensión y depuración. Podrías simplificar el código consolidando algunas de las condiciones en una sola declaración "if" o usando una declaración "switch".5. Falta de manejo de errores: el código no maneja errores si el usuario ingresa un valor no válido para el porcentaje de descuento. Debe agregar manejo de errores para garantizar que la función maneje correctamente las entradas inesperadas.
Aquí hay una versión actualizada del código que soluciona estos problemas:
```javascript
función calcular_total(precio, descuento) {
const DISCOUNT_PERCENTAGE = 0.1; // define una constante para el porcentaje de descuento
if (descuento === indefinido || descuento < 0 || descuento > 100) {
throw new Error('Valor de descuento no válido');
}
const total = precio * (1 - (DISCOUNT_PERCENTAGE * descuento));
total de devolución;
}
```



