JavaScript `||=` Operator: Simplifying Default Assignments

2 min read .

The ||= operator is a logical assignment operator introduced in JavaScript that provides a concise way to assign default values when the left-hand side operand is falsy. This operator is part of the ES2021 (ECMAScript 2021) specification and streamlines the process of setting default values in your code.

What is the ||= Operator?

The ||= operator combines the logical OR (||) operator with the assignment (=) operator. It evaluates the left-hand side operand, and if it is falsy, assigns the right-hand side operand to the left-hand side variable. If the left-hand side operand is truthy, no assignment occurs, and the original value is retained.

Syntax:

variable ||= value;
  • variable: The variable to be conditionally updated.
  • value: The default value assigned to variable if variable is falsy.

Why Use the ||= Operator?

  • Conciseness: Simplifies code by reducing the amount of boilerplate needed for conditional assignments.
  • Readability: Makes it clear that the intention is to assign a default value only when the variable is falsy.
  • Efficiency: Streamlines common patterns of setting defaults, improving both code clarity and maintenance.

How to Use the ||= Operator

  1. Basic Usage

The ||= operator assigns a default value to a variable only if it is falsy:

let userName = '';
let defaultName = 'Guest';

// Assign defaultName if userName is falsy (empty string in this case)
userName ||= defaultName;

console.log(userName); // Output: Guest
  1. Setting Defaults for Function Parameters

Use ||= to set default values for function parameters:

function greet(name) {
  name ||= 'Stranger'; // Default to 'Stranger' if name is falsy
  console.log(`Hello, ${name}!`);
}

greet('Alice'); // Output: Hello, Alice!
greet(); // Output: Hello, Stranger!
  1. Updating Object Properties

Assign default values to properties in an object:

let settings = {
  theme: '',
  fontSize: 14
};

// Update theme only if it's falsy
settings.theme ||= 'Light';

console.log(settings.theme); // Output: Light
  1. Combining with Other Operators

Combine ||= with other logical or assignment operators for more complex logic:

let counter = 0;
let incrementValue = 5;

// Update counter if it's falsy (0 in this case)
counter ||= incrementValue;

console.log(counter); // Output: 5
  1. Default Values with Objects

Assign default values to nested properties within objects:

let userConfig = {
  theme: null,
  language: 'en'
};

// Assign default theme if it is null or undefined
userConfig.theme ||= 'Dark';

console.log(userConfig.theme); // Output: Dark

Comparison with Other Operators

  • || (Logical OR): The || operator returns the right-hand side value if the left-hand side is falsy, but does not perform an assignment.

    let value = null;
    value ||= 'default'; // value is assigned 'default' because null is falsy
    
  • &&= (Logical AND Assignment): The &&= operator assigns the right-hand side value if the left-hand side is truthy.

    let flag = true;
    flag &&= false; // flag is updated to false because true is truthy
    

Browser Compatibility

The ||= operator is supported in modern JavaScript environments including recent versions of Chrome, Firefox, Safari, and Edge. Ensure compatibility with older browsers or environments if necessary, as it may not be supported in legacy systems.

Conclusion

The JavaScript ||= operator simplifies the process of assigning default values by combining logical OR with assignment. This operator reduces boilerplate code and enhances readability, making it a valuable tool for setting defaults in your applications.

See Also

chevron-up