Simplifying JavaScript Code with Optional Chaining and Nullish Coalescing
A New Era of Code Ergonomics
JavaScript is about to get a whole lot easier to work with, thanks to two new operators that have reached stage 3 in the TC39 process: optional chaining and nullish coalescing. These operators promise to revolutionize the way we write and read code, making it safer, more concise, and more efficient.
The Pain of Working with Uncertain Data
When working with data in JavaScript, we often encounter situations where we’re not sure if something exists. Imagine requesting weather data from an API, only to find that the high temperature is missing for some days or the entire temperature data is absent. This uncertainty can lead to tedious code, riddled with checks and exceptions.
Optional Chaining: A Safer Way to Navigate Objects
Optional chaining, denoted by the ?.
operator, provides a terse alternative to navigating uncertain objects. It’s similar to the safe navigation operator found in languages like Swift and C#. With optional chaining, our code becomes both safer and more concise. If any part of the expression is null or undefined, the entire expression short-circuits and returns undefined, avoiding those pesky TypeError: Cannot read property 'current' of undefined
exceptions.
Beyond Object Navigation: Optional Chaining in Action
Optional chaining isn’t limited to object navigation. It works seamlessly with bracket notation and even function calls. If a function doesn’t exist, the expression will return undefined instead of throwing an error. However, if the function exists but isn’t a function, an error will still occur.
The Nullish Coalescing Operator: A Cleaner Way to Coalesce Values
Another common pattern in JavaScript is using the logical OR operator (||
) to coalesce values. However, this approach has its limitations. The nullish coalescing operator (??
) provides a cleaner method, rejecting values only if they are strictly null or undefined. This means that falsy values like 0, empty strings, and NaN are accepted as valid.
Ecosystem Support and Adoption
The JavaScript community is eager to adopt these new operators, and tools have already started to add support. TypeScript, Babel, Prettier, and ESLint (with a workaround) are all on board. As these operators become part of the formal ECMAScript specification, we can expect to see widespread adoption and a significant improvement in code ergonomics.
Debugging Made Easier with LogRocket
Debugging code is always a challenge, but with LogRocket, you can gain a deeper understanding of your errors and fix them more efficiently. Our frontend monitoring solution tracks user engagement, console logs, page load times, and more, giving you the insights you need to write better code. Try it for free today!