You may write code in javascript like this:
if (foo && foo.bar && foo.bar.baz) {
foo.bar.baz();
}
We want to call baz()
but first need check if foo
, foo.bar
, foo.bar.baz
present. i think this is a little bit more prolixity.
Now you can write code like
foo?.bar?.baz()
That all, just need use ?.
operator, this called optional chainning. you need do something in babel config
// babel.config.js
module.exports = {
env: {
.....
plugins: ['@babel/plugin-proposal-optional-chaining']
}
}
}
More optional Channing example:
Dealing with optional callbacks or event handlers
function doSomething(onContent, onError) {
try {
// ... do something with the data
}
catch (err) {
onError?.(err.message); // no exception if onError is undefined
}
}
Optional chaining with expressions
let nestedProp = obj?.['prop' + 'Name'];
Array item access with optional chaining
let arrayItem = arr?.[42];
You can found more api optional chainning
Hope it can help you :)
Top comments (0)