Я недавно программировал в Swift. Сегодня я сделал некоторую работу в JavaScipt, когда возник вопрос:Необязательная цепочка в JavaScript
Есть ли что-то похожее на факультативную цепочку в 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
, чтобы что-то вернуть. Но мне интересно, есть ли что-то вроде дополнительной цепочки. Меня не интересует конкретное решение вышеприведенного примера . То, что я также могу использовать, если не имеет никакого контроля над функцией, возвращающей неопределенный.
Что вы хотите изменить значение(), когда test() возвращает undefined? –
@ Замещено неверно или не определено. Это не имеет значения. – idmean
вы можете обернуть существующую функцию, чтобы вернуть значение по умолчанию в случае неопределенного без перезаписи. вы также можете использовать тройной (x? y: z)() или оператор по умолчанию (x || y)() во время вызова. – dandavis