Since I’m on a bit of a SuiteScript 2.1 kick these days, I thought I’d share another common pattern I use and love.
Often in SuiteScript, I find myself needing to build then pull data from deeply nested Object structures.
Take this real-world function from some error handling code I recently wrote for a Map/Reduce
summarize stage. The function accepts an Error – which has been previously augmented with additional data from the
reduce stage where the error occurred – from the
summarize context, then generates a URL the user can click to investigate further. Before it can do that, it needs to make sure the Error has all the right pieces:
Even reading it right now I’m annoyed with it. So many
&&s! Luckily, the wonderful ECMAScript designers have added a lovely new optional chaining operator, which we can take advantage of in SuiteScript 2.1, that really helps condense this same check down into just the really important parts:
Instead of checking every single level of the Object structure individually, we can simply examine the entire chain using the
?. operator – as opposed to the plain old
. operator. If any part of the chain is not defined, the expression will short-circuit and return
undefined, which would then short-circuit our larger logical expression correctly, without any errors.