首页 > 解决方案 > 使用“|| 0”的 JavaScript 空安全属性访问

问题描述

在阅读leetcode 上的树解析问题的解决方案时,我在 JavaScript 中遇到了一个巧妙的 null 安全属性访问技巧。它使用 OR 运算符 ( ||) 来指定默认值。但在这种情况下,它也避免了由于访问原语的属性而引发异常:

(MaybeObject || 0).prop

这评估为undefined,但我不明白为什么,因为由于评估的顺序,错误仍然应该出现:

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

JavaScript 在尝试访问不存在的属性时如何不抛出错误false

我的第一个直觉是这个数字可能0被转换为 String 'false',但下面的表达式也计算为undefined

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

你能帮我解释一下吗?

标签: javascriptlogical-operators

解决方案


推荐阅读