JavaScript provides several ways to express conditional logic – that is, executing different code paths based on whether a condition is true or false. While traditional if...else
statements are common, JavaScript also offers more concise ways to achieve this, particularly useful for inline expressions. This tutorial will cover the conditional (ternary) operator, and how it enables inline conditionals.
Traditional if...else
Statements
Before diving into inline conditionals, let’s quickly review the standard if...else
statement:
if (condition) {
// Code to execute if the condition is true
} else {
// Code to execute if the condition is false
}
This is a fundamental construct for controlling program flow. However, when you need a simple conditional assignment or expression within a larger statement, it can become verbose.
The Conditional (Ternary) Operator
The conditional (ternary) operator provides a concise alternative. It’s a shorthand way to express a simple if...else
statement. The syntax is as follows:
condition ? expressionIfTrue : expressionIfFalse;
condition
: An expression that evaluates to a boolean value (true or false).?
: The ternary operator symbol.expressionIfTrue
: The expression that will be evaluated and returned if thecondition
is true.:
: Separates the true and false expressions.expressionIfFalse
: The expression that will be evaluated and returned if thecondition
is false.
Example
Let’s say we want to determine if a number is even or odd and assign a string accordingly:
let number = 7;
let result = (number % 2 === 0) ? "Even" : "Odd";
console.log(result); // Output: Odd
In this example:
number % 2 === 0
is the condition. It checks if the remainder ofnumber
divided by 2 is equal to 0."Even"
is the expression evaluated if the condition is true."Odd"
is the expression evaluated if the condition is false.- The result of the ternary operator is assigned to the
result
variable.
Using the Ternary Operator for Assignments
One of the main benefits of the ternary operator is its ability to be used directly within assignments:
let age = 20;
let status = (age >= 18) ? "Adult" : "Minor";
console.log(status); // Output: Adult
This provides a clean and concise way to assign values based on a condition. Without the ternary operator, you would need a full if...else
block for this simple assignment.
Nested Ternary Operators (Use with Caution)
You can nest ternary operators, but it’s generally discouraged as it can quickly make your code difficult to read. Consider using a standard if...else
statement for complex logic.
Inline Conditionals with Logical Operators
While the ternary operator is the most common way to achieve inline conditionals, you can also use logical operators (&&
and ||
) for specific scenarios.
&&
(Logical AND): Evaluates to the second operand if the first operand is truthy; otherwise, it evaluates to the first operand.||
(Logical OR): Evaluates to the first operand if it’s truthy; otherwise, it evaluates to the second operand.
Example:
let isLoggedIn = true;
let message = isLoggedIn && "Welcome!";
console.log(message); // Output: Welcome!
let temperature = 15;
let weatherMessage = temperature > 20 ? "It's warm" : "It's cool";
console.log(weatherMessage); // Output: It's cool
When to Use Inline Conditionals
- Simple assignments: When assigning a value based on a straightforward condition.
- Concise expressions: When you need a compact way to express conditional logic within a larger statement.
- Readability: Ensure that your code remains easy to understand. If the conditional logic becomes complex, opt for a standard
if...else
statement.