Question mark and colon in JavaScript

Inaimathi picture Inaimathi · Nov 20, 2009 · Viewed 203.1k times · Source

I came across the following line

hsb.s = max != 0 ? 255 * delta / max : 0;

What do the ? and : mean in this context?

Answer

Greg picture Greg · Nov 20, 2009

It is called the Conditional Operator (which is a ternary operator).

It has the form of: condition ? value-if-true : value-if-false
Think of the ? as "then" and : as "else".

Your code is equivalent to

if (max != 0)
  hsb.s = 255 * delta / max;
else
  hsb.s = 0;