I am looking to see if there is an even-shorter notation for an already relatively compact notation. It seems like some piece of syntax that would exist for a fairly common pattern in code.
Here, the ternary operator returns props.initialValues.time if it is truthy, and something else if falsy:
props.initialValues.time ? props.initialValues.time : props.startTime
But why specify the checked condition twice in this case? I found myself trying to type it this way: (maybe I have seen it somewhere else a while ago or something)
props.initialValues.time ? : props.startTime
What I mean to say is, return the checked condition if it is true otherwise return props.startTime. Does similar syntax for this purpose exist in JS, or in any other language? Checked on google with little luck, maybe I am wording my question incorrectly, or maybe it in fact does not exist.
CodePudding user response:
||
can be used as a shortcut - it'll evaluate to the left side if the left side is truthy, and to the right side otherwise.
props.initialValues.time || startTime
In modern syntax, it'd be preferable to use ??
if the left-hand side will specifically be undefined or null:
props.initialValues.time ?? startTime
CodePudding user response:
a ? a : b
can be changed to a || b
a ? b : a
can be changed to a && b
So for your case:
props.initialValues.time || props.startTime
CodePudding user response:
If you're checking whether the property exists, you can use the nullish coalescing operator:
props.initialValues.time ?? props.startTime
let a = 5
let b = 6
console.log(a ?? b)
console.log(a ? a : b)
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>