Conditional Operators in Javascript Conditional Operators in Javascript javascript javascript

Conditional Operators in Javascript


Conditional operators are intentionally succinct and especially useful for assignments:

var a = x ? 1 : 2;

Using them to conditionally run functions, while possible, should, for the sake of readability be done using IF/ELSE statements:

// This is possible but IMO not best practice:X ? doSomething() : doSomethingElse();

While long-winded, most of the time, this is the better solution:

if (X) {    doSomething();} else {    doSomethingElse();}

One notable benefit to the IF/ELSE structure is that you can add additional tasks under each condition with minimal hassle.

Your last snippet is also possible but it looks somewhat long-winded and, again, might be better suited to a more conventional logical structure; like an IF/ELSE block.

That said, a conditional operator can still be readable, e.g.

(something && somethingElse > 2) ?   doSomeLongFunctionName()   : doSomeOtherLongFunctionName();

In the end, like many things, it's down to personal preference. Always remember that the code you're writing is not just for you; other developers might have to wade through it in the future; try and make it as readable as possible.


JavaScript won't prevent you from doing it, but it's very a unusual practice that will confuse anyone reading your code.

The conditional operator is almost always used for selecting two alternative values, not statements. An if statement is preferred for conditional branching of statements.

As to your last question, yes, if you really must, you can abuse the [] construct:

(x == y) ? [alert("yo!"), document.write("woot!")] : otherstuff();

But please don't. 8-)


It is entirely up to you, you can do it either way. You just have to ask yourself, though, does this style follow company guidelines, and how readable do you want this code to be?

Using if statements is way more readable.

Personally, I only use the ternary operator for simple and quick true/false conditions--where doing so makes sense--or where I need something "inline".