gpt4 book ai didi

javascript - javascript 中有类似快速可选链接的东西吗?

转载 作者:IT王子 更新时间:2023-10-29 05:14:34 28 4
gpt4 key购买 nike

我已经在 javascript 中编写了很多这样的代码

if (params && params.profile && params.profile.address && params.profile.address.default)

我必须检查每个可选的地方,这变得非常乏味。 javascript 中是否有更好的方法类似于 swift 处理可选值的方式,例如

if let checked = params?.profile?.address?.default?

最佳答案

Optional chaining has now been added to the language使用与 Swift 相同的 ?. 语法,所以我建议这样做,除非您需要支持旧版浏览器。

如果你这样做,我已经写了一个函数来处理这个:

function getSafe (func) {
try {
return func()
} catch (e) {
if (e instanceof TypeError) {
return undefined
} else {
throw e
}
}
}

这样调用它:

if (getSafe(() => params.profile.address.default))

这是有效的,因为通过将它包装在一个匿名函数中,直到 try/catch block 才会对其进行评估,然后如果任何父属性未定义,它将捕获错误并返回 undefined .

检查 e 是否为 TypeError 可防止它吞下函数可能抛出的任何其他错误,以便仍可根据需要处理这些错误。如果您希望它在出现任何错误时只返回 undefined,您可以删除该部分:

function getSafeNoErrors (func) {
try {
return func()
} catch {
return undefined
}
}

关于javascript - javascript 中有类似快速可选链接的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33757931/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com