Sev*_*ven 6 javascript optional-chaining
所以,我正在阅读 JavaScript 中的可选链,一个问题突然出现在我的脑海中。
考虑下面的代码:
let person = null
let street = person?.street // returns undefined
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果变量person是null从变量开始的,那么为什么要进行可选链接结果将变量设置为undefined而不是null?
如果这个人是undefined,那么我想,对我来说,将其设置为undefined是合理的,因为变量当然是undefined,如下所示:
let person
let street = person?.street // returns undefined
Run Code Online (Sandbox Code Playgroud)
PS:如果这是一个愚蠢的问题,我很抱歉,如果有人同意我会删除它。:)
PPS:如果这个问题重复,请删除链接,我会尝试一下。非常感谢。
可选链不会评估访问属性时的空值,而是评估undefined- 就像undefined对象中不存在属性时所得到的那样。
person?.street从概念上讲,不认为
person && person.street
Run Code Online (Sandbox Code Playgroud)
而是作为
(person ?? {}).street
Run Code Online (Sandbox Code Playgroud)
虽然准确(特别是当进一步链接时,因为它确实短路而不是评估链的其余部分),但它确实是
person != null ? person.street : undefined
Run Code Online (Sandbox Code Playgroud)
另请参阅有关可选链提案的常见问题解答:
为什么
(null)?.b评估为undefined而不是null?也不
a.b是a?.b为了保留有关基础对象的任意信息a,而只是为了提供有关该对象的属性的信息"b"。"b"如果中不存在某个属性,则这会通过和a反映出来。a.b === undefineda?.b === undefined特别是,该值
null被认为没有属性;因此,(null)?.b是undefined。
| 归档时间: |
|
| 查看次数: |
10468 次 |
| 最近记录: |