I've been programming a lot in Swift recently. Today I did some work in JavaScipt when question popped up to me:
Is there something similar to optional chaining in JavaScript? A way to prevent undefined is not an object without any variables?
Example:
function test(){
   if(new Date() % 2){
      return {value: function(){/*code*/}};
   }
} 
test().value();
will fail half of time because sometimes test returns undefined. 
The only solution I can think of is a function:
function oc(object, key){
   if(object){
      return object[key]();
   }
}
oc(test(), 'value');
I would like to be able to do something like:
test()?.value()
The part after the question mark is only executed if test returned an object.
But this is not very elegeant. Is there something better? A magic combination of operators?
Edit I know I could rewrite test to return something. But I'm wondering if there's something like optional chaining. I'm not interested in a particular solution to the above example. Something that I also can use if have no control over the function returning undefined.
 
     
     
     
     
     
     
     
     
     
     
    