【问题标题】:What does this JavaScript expression mean?这个 JavaScript 表达式是什么意思?
【发布时间】:2020-09-19 04:40:47
【问题描述】:

我正在使用react-navigation,但我无法弄清楚这种语法的含义。

React.useEffect(() => {
    if (route.params?.post) { <<<<<WHAT IS THIS ?
      // Post updated, do something with `route.params.post`
      // For example, send the post to the server
    }
  }, [route.params?.post]);

它是否像 obect.doesPropertyExist.subProperty 或其他东西一样工作?


我尝试过阅读 MDN 文档,但找不到任何对此类语法的引用。我无法在节点 REPL 中的随机对象上使用类似的语法。

【问题讨论】:

  • 它是 optional.chaining,只是意味着if(route.params.post) 然后做点什么。它检查route.params 是否有对象post。
  • 为什么问号在中间而不是被省略或在末尾?
  • 没关系通过搜索可选链接找到文档谢谢
  • 节点 14 及更高版本支持可选链接,这是当前最新版本。这意味着当前节点的 LTS 版本是版本 12 不支持它。

标签: javascript node.js syntax react-navigation


【解决方案1】:

它被称为可选链接。在 MDN 文档中提供:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining

可选的链接运算符 (?.) 允许读取 a 的值 位于连接对象链深处的属性,没有 必须明确验证链中的每个引用都是 有效的。这 ?。运算符的功能与 .链接运算符, 除了如果引用为空而不是导致错误 (null 或 undefined),表达式短路并返回值 的未定义。与函数调用一起使用时,它返回 undefined if 给定的函数不存在。

if(route.params.post) 然后做点什么。 它检查route.params 是否有对象post

【讨论】:

    【解决方案2】:

    它叫做Optional Chaining operator。它是

    的简写
    route.params && route.params.post
    

    【讨论】:

      猜你喜欢
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 2011-03-04
      • 2020-10-23
      相关资源
      最近更新 更多