当前位置: 首页 > 面试题库 >

JavaScript中的可选链接

漆雕和昶
2023-03-14
问题内容

我最近在Swift中进行了大量编程。今天,当出现问题时,我在JavaScipt中做了一些工作:

是否有类似于JavaScript中的可选链接的内容?一种防止undefined is not an object没有任何变量的方法?

例:

function test(){
   if(new Date() % 2){
      return {value: function(){/*code*/}};
   }
}

test().value();

将失败一半的时间,因为有时test返回未定义。

我能想到的唯一解决方案是一个函数:

function oc(object, key){
   if(object){
      return object[key]();
   }
}

oc(test(), 'value');

我希望能够执行以下操作:

test()?.value()

仅在test返回对象后才执行问号后的部分。

但这不是很精巧。有更好的东西吗?运营商的神奇组合?

编辑 我知道我可以重写test以返回某些内容。但是我想知道是否有类似可选链接的东西。我对上述 示例
的特定解决方案不感兴趣。如果无法控制返回undefined的函数,我也可以使用某些东西。


问题答案:

Optional Chaining运算符是拼写的?.。它可能出现在三个位置:

obj?.prop       // optional static property access
obj?.[expr]     // optional dynamic property access
func?.(...args) // optional function or method call

笔记

为了允许foo?.3:0被解析为foo?.3:0(向后兼容所需),在词法语法级别添加了一个简单的超前功能,因此?.在这种情况下,字符序列不能解释为单个标记(?.标记不能后面紧跟一个十进制数字)。



 类似资料:
  • 可选链是一个调用和查询可选属性、方法和下标的过程,它可能为 nil 。如果可选项包含值,属性、方法或者下标的调用成功;如果可选项是 nil ,属性、方法或者下标的调用会返回 nil 。多个查询可以链接在一起,如果链中任何一个节点是 nil ,那么整个链就会得体地失败。 注意 Swift 中的可选链与 Objective-C 中的 nil 信息类似,但是它却工作在任意类型上,而且它能检测成功还是失败

  • 本页包含内容: 可选链可替代强制解析 为可选链定义模型类 通过可选链调用属性 通过可选链调用方法 使用可选链调用下标脚本 连接多层链接 链接可选返回值的方法 可选链(Optional Chaining)是一种可以请求和调用属性、方法及下标脚本的过程,它的可选性体现于请求或调用的目标当前可能为空(nil)。如果可选的目标有值,那么调用就会成功;相反,如果选择的目标为空(nil),则这种调用将返回空(

  • A recent addition This is a recent addition to the language. Old browsers may need polyfills. 可选链 ?. 是一种访问嵌套对象属性的安全的方式。即使中间的属性不存在,也不会出现错误。 “不存在的属性”的问题 如果你才刚开始读此教程并学习 JavaScript,那可能还没接触到这个问题,但它却相当常见。 举

  • 可选链(Optional Chaining)是一种可以请求和调用属性、方法和子脚本的过程,用于请求或调用的目标可能为nil。 可选链返回两个值: 如果目标有值,调用就会成功,返回该值 如果目标为nil,调用将返回nil 多次请求或调用可以被链接成一个链,如果任意一个节点为nil将导致整条链失效。 可选链可替代强制解析 通过在属性、方法、或下标脚本的可选值后面放一个问号(?),即可定义一个可选链。

  • 在可选的“nil”上查询,调用属性,下标和方法的过程被定义为可选链接。 可选链接返回两个值 - 如果可选项包含'value',则调用其相关属性,方法和下标返回值 如果可选项包含'nil'值,则其所有相关属性,方法和下标返回nil 由于对方法,属性和下标的多个查询被组合在一起,因此对一个链的失败将影响整个链并导致'nil'值。 可选链接作为强制解包的替代方法 在带有'?'的可选值后指定可选链接 在可

  • 主要内容:为可选链和访问属性定义模型类,链的多级链接在可选的上查询,调用属性,下标和方法的过程叫作可选链。可选链接返回两个值 - 如果可选项包含值,则调用相关属性,方法和下标返回值。 如果可选项包含值,则所有相关属性,方法和下标返回。 由于对方法,属性和下标的多个查询组合在一起,因此对一个链的失败将影响整个链的结果为值。 可选链作为强制解包的替代方法 在带有的可选值后指定可选链,在可选值返回某些值时调用属性,方法或下标。 可选链 访问方法,属性和下