A somewhat painful triple-nested ternary operator
To my personal taste, a carefully aligned nested ternary beats the if-else mess:
const H = C == 0 ? null : V == r ? (g - b) / C : V == g ? (b - r) / C + 2 : (r - g) / C + 4 ;
I think you can have this to avoid the deep nesting:
var Hif(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;}
If your JavaScript codebase contains nested ternary statements like the one in question, consider converting the formatting to daisy chained ternary statements instead.
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
They simply read top to bottom in a straight line, returning a valueas soon as they hit a truthy condition or the fallback.
–Nested Ternaries are Great, Eric Elliot