DEV Community

Cover image for Nullish Coalescing Operator `??` in JavaScript
codenextgen
codenextgen

Posted on

1

Nullish Coalescing Operator `??` in JavaScript

In this blog, we'll explore the nullish coalescing operator ?? in JavaScript. We'll compare it with the logical OR operator ||, discuss its precedence, and provide practical examples to help you understand its usage. Let's dive in!

Nullish Coalescing Operator ??

The nullish coalescing operator ?? is used to provide a default value when dealing with null or undefined. It returns the right-hand operand when the left-hand operand is null or undefined. Otherwise, it returns the left-hand operand.

Syntax:

result = value1 ?? value2;

Enter fullscreen mode Exit fullscreen mode

Example:

let user = null;
let defaultUser = "Guest";

let currentUser = user ?? defaultUser;
console.log(currentUser); // Output: "Guest"

Enter fullscreen mode Exit fullscreen mode

Explanation:

  • user is null.
  • The ?? operator returns defaultUser because user is null.

Comparison with ||

The logical OR operator || returns the first truthy value it encounters. This means it will return the right-hand operand if the left-hand operand is falsy (false, 0, "", null, undefined, NaN).

Example:

let user = "";
let defaultUser = "Guest";

let currentUser = user || defaultUser;
console.log(currentUser); // Output: "Guest"

Enter fullscreen mode Exit fullscreen mode

Explanation:

  • user is an empty string "" (falsy).
  • The || operator returns defaultUser because user is falsy.

Key Differences

  • ??: Only considers null and undefined as falsy values.
  • ||: Considers all falsy values (false0""nullundefinedNaN).

Example:

let user = 0;
let defaultUser = "Guest";

let currentUser1 = user ?? defaultUser;
let currentUser2 = user || defaultUser;

console.log(currentUser1); // Output: 0
console.log(currentUser2); // Output: "Guest"

Enter fullscreen mode Exit fullscreen mode

Explanation:

  • user is 0 (falsy for || but not for ??).
  • The ?? operator returns 0 because user is not null or undefined.
  • The || operator returns "Guest" because user is falsy.

Precedence

The nullish coalescing operator ?? has a lower precedence than most other operators, including the logical OR operator ||. This means that expressions involving ?? are evaluated after expressions involving ||.

Example:

let a = null;
let b = false;
let c = "Hello";

let result1 = a ?? b || c;
let result2 = a || b ?? c;

console.log(result1); // Output: "Hello"
console.log(result2); // Output: "Hello"

Enter fullscreen mode Exit fullscreen mode

Explanation:

  • a ?? b returns false because a is null and b is false.
  • false || c returns "Hello" because false is falsy and c is truthy.
  • a || b returns false because a is null and b is false.
  • false ?? c returns "Hello" because false is not null or undefined.

Practical Examples

Let's put everything together with some practical examples:

Using ?? for Default Values

function getUserName(user) {
  return user.name ?? "Guest";
}

let user1 = { name: "Alice" };
let user2 = { age: 25 };

console.log(getUserName(user1)); // Output: "Alice"
console.log(getUserName(user2)); // Output: "Guest"

Enter fullscreen mode Exit fullscreen mode

Explanation:

  • If user.name is null or undefined, the ?? operator returns "Guest".

Using || for Default Values

function getUserName(user) {
  return user.name || "Guest";
}

let user1 = { name: "" };
let user2 = { age: 25 };

console.log(getUserName(user1)); // Output: "Guest"
console.log(getUserName(user2)); // Output: "Guest"

Enter fullscreen mode Exit fullscreen mode

Explanation:

  • If user.name is falsy (e.g., ""), the || operator returns "Guest".

Summary

  • ?? (Nullish Coalescing Operator): Returns the right-hand operand if the left-hand operand is null or undefined.
  • || (Logical OR Operator): Returns the first truthy value it encounters.
  • Precedence: The ?? operator has a lower precedence than the || operator.

Conclusion

The nullish coalescing operator ?? is a powerful tool in JavaScript for providing default values when dealing with null or undefined. By understanding its differences from the logical OR operator || and its precedence, you'll be able to write more robust and error-free code. Keep practicing and exploring to deepen your understanding of the nullish coalescing operator in JavaScript.

Stay tuned for more in-depth blogs on JavaScript! Happy coding!

SurveyJS custom survey software

Build Your Own Forms without Manual Coding

SurveyJS UI libraries let you build a JSON-based form management system that integrates with any backend, giving you full control over your data with no user limits. Includes support for custom question types, skip logic, an integrated CSS editor, PDF export, real-time analytics, and more.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay