JavaScript's Optional Chaining: Writing Safer, Cleaner Code

Discover the revolutionary feature of Optional Chaining in JavaScript. Gain insight on crafting code that is more streamlined, secure, and tidy through hands-on examples.

JavaScript's Optional Chaining: Writing Safer, Cleaner Code
Photo by Fili Santillán / Unsplash

Optional chaining, a core feature brought in with ES11/ECMAScript 2020, enables developers to access not only properties of an object but also the nested objects and their properties as well. It's especially beneficial  when there's uncertainty about the existence of a specific property in an object or within its nested object at any level. This feature fosters safer and more efficient coding practices in JavaScript. Below are the key advantages of incorporating Optional Chaining in JavaScript:

Enhanced Safety: It safeguards against errors that may arise due to trying to access properties of undefined or null values.

Code Efficiency: It helps in writing concise and clean code, reducing the necessity for verbose conditional checks.

Improved Readability: The code becomes more understandable and manageable, which is crucial for maintaining larger codebases.

Using Optional Chaining

Optional chaining reduces the amount of conditional code you have to write to access nested properties and avoids throwing errors when trying to access properties on undefined or null values.

const value = obj?.property;

Example of Optional Chaining

Without optional chaining, attempting to access a non-existent nested property would result in a JavaScript error.

const user = {
  name: "John",
  address: {
    city: "New York"

console.log(user.profile.age); // Results in: Cannot read property 'age' of undefined

However, with optional chaining, nested properties can be accessed securely without an error, returning undefined if the property doesn't exist.

console.log(user?.profile?.age); // Results in: undefined

Integration with Nullish Coalescing Operator (??)

Optional chaining can be combined with the nullish coalescing operator ?? to assign a default value when a property is null or undefined.

console.log(user?.profile?.age ?? 'Age is not available'); // Results in: Age is not available

In this scenario, user?.profile?.age will be undefined as user.profile is undefined, and the operator will return the string 'Age is not available'.

Concluding Thoughts

We encourage all JavaScript developers, whether budding or experienced, to integrate optional chaining in their coding practices to write cleaner and more efficient code. Please share your thoughts, experiences, and queries in the comments section below. We are eager to hear from you and foster a community of learning and sharing!