So, I am reading optional chaining in JavaScript and a question popped into my head.
Consider the code below:
let person = null
let street = person?.street // returns undefined
My question is that, if the variable person
is null
to begin with, then why is doing optional chaining result to setting the variable as undefined
and not null
?
If the person was undefined
, then I guess, for me, setting it to undefined
is reasonable because the variable is of course undefined
, like the below:
let person
let street = person?.street // returns undefined
PS: I'm sorry if this is a stupid question, I'll delete it if someone agrees. :)
PPS: If this question is duplicated, pls drop the link and I'll give it a go. Thank you, very much.
An optional chain does not evaluate to the nullish value on which the property was accessed, but to
undefined
- just like you getundefined
when a property does not exist in an object.Conceptually, think of
person?.street
not asbut rather as
Though accurately (especially when chained further, since it does short-circuit instead of evaluating the rest of the chain) it's really
See also the FAQ on the optional chaining proposal: