From humble beginnings at an MSP, I've adventured through life as a sysadmin, into an engineer, and finally landed as a developer focused on fixing problems with automation.
May be a long argument but it's not two nulls, it's a null (defined) and an undefined. They have usefully different meanings and usages. Saying it's two nulls is a bit like saying that zero and null are the same because they both mean "nothing".
constuser={auth:{isLoggedIn:false}}constisLoggedIn=user.auth?.isLoggedIn||true// isLoggedIn would be true!constisLoggedIn=user.auth?.isLoggedIn??true// isLoggedIn would be false!
As you can see there is a difference in how they work.
The problem with || is that it will return the right value when the left value is falsy. The ?? just checks for null or undefined.
There are always alternatives if you can also write
if(user.auth?.isLoggedIn===true){// user is logged in!}
Nobody is forcing anybody to use the ?? operator but I think it just fits nicely together with the ?. and makes the intent clear if the developer knows how both of them work.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Why
Rather than
?
Probably that ?? only cares about undefined properties, not null or zero or empty string etc.
It's called nullish for a reason. Because for some reason, JS thought two nulls would be a good idea.
May be a long argument but it's not two nulls, it's a null (defined) and an undefined. They have usefully different meanings and usages. Saying it's two nulls is a bit like saying that zero and null are the same because they both mean "nothing".
I would have to agree with you, however in the wild most code I've seen misinterprets this and there is mixed usage of both all over the place..
And everybody is true here :)
I try to use
undefined
as much as I can instead ofnull
.But some frameworks want you to use
null
.Good question!
Example time!
As you can see there is a difference in how they work.
The problem with
||
is that it will return the right value when the left value isfalsy
. The??
just checks fornull
orundefined
.Could also consider converting to a true/false value with:
@joshua I was literally going to say the same thing.
I fail to see the point/usefulness of the '??' operator
There are always alternatives if you can also write
Nobody is forcing anybody to use the
??
operator but I think it just fits nicely together with the?.
and makes the intent clear if the developer knows how both of them work.