Solución:
Para mi gusto personal, un ternario anidado cuidadosamente alineado supera al lío if-esle:
const H =
C == 0 ? null :
V == r ? (g - b) / C :
V == g ? (b - r) / C + 2 :
(r - g) / C + 4 ;
Creo que puedes tener esto para evitar la anidación profunda:
var H
if(C == 0){
H = null;
}
else if(V == r){
H = (g - b) / C;
}
else if (V == g){
H = (b - r) / C + 2;
}
else {
H = (r - g) / C + 4;
}
Si su base de código JavaScript contiene declaraciones ternarias anidadas como la en cuestión, considere convertir el formato a declaraciones ternarias encadenadas en su lugar.
H = (C == 0) // Is C zero?
? null // Then return `null`, else ...
: (V == r) // Is V equal to r?
? (g - b) / C // Then return this value, else ...
: (V == g) // Is V equal to g?
? (b - r) / C + 2 // Then return this value
: (r - g) / C + 4; // Otherwise fall back to this default value
Simplemente leen de arriba a abajo en línea recta, devolviendo un valor tan pronto como alcanzan una condición de verdad o el retroceso.
–Los ternarios anidados son geniales, Eric Elliot
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)