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