A somewhat painful triple-nested ternary operator A somewhat painful triple-nested ternary operator javascript javascript

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