0
votes

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.

3

3 Answers

1
votes

|| 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
0
votes

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
0
votes

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)