gpt4 book ai didi

javascript - JavaScript 中的可选链接

转载 作者:行者123 更新时间:2023-11-28 03:10:01 25 4
gpt4 key购买 nike

我最近用 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归还某物。但我想知道是否有类似可选链的东西。我对上述示例的特定解决方案不感兴趣。如果无法控制返回未定义的函数,我也可以使用它。

最佳答案

目前这是第 4 阶段的提案,您可以在此处查看其进度:
https://github.com/tc39/proposal-optional-chaining

您今天可以使用 babel 插件:
https://www.npmjs.com/package/babel-plugin-transform-optional-chaining

2020 年 1 月 11 日更新:Babel 现在默认支持可选链 https://babeljs.io/blog/2020/01/11/7.8.0

可选链接运算符拼写为?.。它可能出现在三个位置:

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 (根据向后兼容性的要求),在词法语法级别添加了一个简单的前瞻,以便字符序列 ?. 不会被解释为单个在这种情况下的 token (?. token 后面不能紧跟十进制数字)。

还值得一看:

https://github.com/tc39/proposal-nullish-coalescing

https://github.com/babel/babel/tree/master/packages/babel-plugin-proposal-nullish-coalescing-operator

关于javascript - JavaScript 中的可选链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60217201/

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