我最近一直在使用Swift进行编程。今天当我在JavaScript中做一些工作时,有一个问题出现在我的脑海中:
JavaScript中是否有类似可选链的东西?一种能够防止undefined is not an object
而不需要任何变量的方法吗?
例如:
function test(){
if(new Date() % 2){
return {value: function(){/*code*/}};
}
}
test().value();
有时候test
会返回undefined,因此这个测试有一半的几率失败。
我能想到的唯一解决方法是编写一个函数:
function oc(object, key){
if(object){
return object[key]();
}
}
oc(test(), 'value');
我希望能够做到像这样:
test()?.value()
如果test
返回一个对象,问号后的部分才会被执行。
但这并不是很优雅。有更好的方法吗?一些神奇的运算符组合吗?
编辑 我知道我可以重写test
来返回一个值。但我想知道是否有类似可选链的东西。我对上面示例中的特定解决方案不感兴趣。而是想找一些即使在无法控制返回undefined的函数时也能使用的东西。
&&
来简化解决方法。 - Teemu