我在阅读this solution到leetcode上的树解析问题时遇到了一个聪明的JavaScript中的null安全属性访问技巧。它使用OR运算符(||
)指定默认值。但是在这种情况下,它也避免了由于访问基本类型的属性而引发异常:
(MaybeObject || 0).prop
这计算为undefined
,但我不明白为什么,因为由于计算顺序,错误仍然会出现:
MaybeObject
,假设它是undefined
(错误值)。||
的第二个操作数,这里是0
(另一个伪造的值)。false || false
的值为false
。prop
)的结果的false
属性。当尝试访问false
的不存在的属性时,JavaScript不会引发错误吗?
我的第一个直觉是也许将数字0
转换为字符串'false'
,但以下表达式的计算结果也为undefined
:
(undefined || 0).length // => undefined, not a String of length 5
您能帮我阐明一下吗?