使用“ || 0”的JavaScript空安全属性访问

时间:2019-04-01 19:12:29

标签: javascript logical-operators

我在阅读this solution到leetcode上的树解析问题时遇到了一个聪明的JavaScript中的null安全属性访问技巧。它使用OR运算符(||)指定默认值。但是在这种情况下,它也避免了由于访问基本类型的属性而引发异常:

(MaybeObject || 0).prop

这计算为undefined,但我不明白为什么,因为由于计算顺序,错误仍然会出现:

  1. 评估MaybeObject,假设它是undefined(错误值)。
  2. 计算||的第二个操作数,这里是0(另一个伪造的值)。
  3. false || false的值为false
  4. 访问上一次计算(prop)的结果的false属性。

当尝试访问false的不存在的属性时,JavaScript不会引发错误吗?

我的第一个直觉是也许将数字0转换为字符串'false',但以下表达式的计算结果也为undefined

(undefined || 0).length    // => undefined, not a String of length 5

您能帮我阐明一下吗?

0 个答案:

没有答案