Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conditional Operators in Javascript

Is it ok to use conditional operators like a statement like so?

(x == y) ? alert("yo!") : alert("meh!");

Or is it more correct to use it to assign a value like so?

z = (x == y) ? "yo!" : "meh!";

If it's not incorrect to use it like a statement, then is it possible to add more than one line of code for execution like so? Is it more correct to use ifthen and switch statements for multiple lines of code?

(x == y) ? (alert("yo!"), document.write("woot!")) : (alert("meh!"), document.write("blah!"));
like image 966
baokhangluu Avatar asked May 15 '09 17:05

baokhangluu


People also ask

What are conditional operators in JavaScript?

The conditional (ternary) operator is the only JavaScript operator that takes three operands: a condition followed by a question mark ( ? ), then an expression to execute if the condition is truthy followed by a colon ( : ), and finally the expression to execute if the condition is falsy.

Which is a conditional operator?

The conditional operator (? :) is a ternary operator (it takes three operands). The conditional operator works as follows: The first operand is implicitly converted to bool . It is evaluated and all side effects are completed before continuing.

What is conditional operator explain with example?

An Example of Conditional OperatorsThe conditional operator "&&" first evaluates whether its first operand (i.e., number % 2 == 0) is true and then evaluates whether its second operand (i.e., number % 4 == 0) is true. As both are true, the logical AND condition is true.

What is == and === operator in JavaScript?

== === = in JavaScript is used for assigning values to a variable. == in JavaScript is used for comparing two variables, but it ignores the datatype of variable. === is used for comparing two variables, but this operator also checks datatype and compares two values.


2 Answers

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.

like image 135
James Avatar answered Oct 17 '22 19:10

James


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-)

like image 24
RichieHindle Avatar answered Oct 17 '22 21:10

RichieHindle