javascript - 使用“|| 0”的 JavaScript 空安全属性访问
问题描述
在阅读leetcode 上的树解析问题的解决方案时,我在 JavaScript 中遇到了一个巧妙的 null 安全属性访问技巧。它使用 OR 运算符 ( ||
) 来指定默认值。但在这种情况下,它也避免了由于访问原语的属性而引发异常:
(MaybeObject || 0).prop
这评估为undefined
,但我不明白为什么,因为由于评估的顺序,错误仍然应该出现:
- 评估
MaybeObject
,假设它是undefined
(错误值)。 - 计算 的第二个操作数
||
,这里是0
(另一个假值)。 false || false
评估为false
。- 访问
prop
先前计算结果的属性 (false
)。
JavaScript 在尝试访问不存在的属性时如何不抛出错误false
?
我的第一个直觉是这个数字可能0
被转换为 String 'false'
,但下面的表达式也计算为undefined
:
(undefined || 0).length // => undefined, not a String of length 5
你能帮我解释一下吗?
解决方案
推荐阅读
- windows - 无法找到用于杀戮的 .bat pid
- python - pandas 按另一列的平均值对一列的值进行排序
- android-studio - 如何更改文本编辑器中默认文本的显示方式
- python - 在python中对数据进行排序,忽略csv中的标头
- powerbi - 日间变化计算不正确
- dialogflow-es - 将对话流意图和实体导入 IBM 对话工作区
- python - POS标记中的字符串索引超出范围
- wordpress - Wordpress - ACF:元查询失败(数字)
- java - 我可以使用任何具有 SkippingCipher 接口的东西解密 Bouncy Castle 中的 GCM AES 流吗?
- php - PHP PDO 数组结果为空,但 var_dump 返回完整结果