Я очень много программировал в Swift. Сегодня я работал над JavaScipt, когда у меня возник вопрос:
Есть ли что-то похожее на необязательную цепочку в 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.