# Question mark and colon in JavaScript

## Question mark and colon in JavaScript

I came across the following line
hsb.s = max != 0 ? 255 * delta / max : 0;

What do the ? and : mean in this context?

## Solutions/Answers:

### Solution 1:

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;
``````

### Solution 2:

Properly parenthesized for clarity, it is

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

meaning return either

• `255*delta/max` if max != 0
• if max == 0

### Solution 3:

This is probably a bit clearer when written with brackets as follows:

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

What it does is evaluate the part in the first brackets. If the result is true then the part after the ? and before the : is returned. If it is false, then what follows the : is returned.

Related:  Functions that return a function

### Solution 4:

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

? is a ternary operator, it works like an if in conjunction with the :

!= means not equals

So, the long form of this line would be

``````if (max != 0) { //if max is not zero
hsb.s = 255 * delta / max;
} else {
hsb.s = 0;
}
``````

### Solution 5:

`? :` isn’t this the ternary operator?

`var x= expression ? true:false`

### Solution 6:

?: is a short-hand condition for `else {}` and `if(){}` problems.
So your code is interchangeable to this:

``````if(max != 0){
hsb.s = 225 * delta / max
}
else {
hsb.s = 0
}
``````

MDN – Conditional (Ternary) Operator

Posted on Categories Javascript