Ho programmato molto in Swift di recente. Oggi ho fatto un po 'di lavoro in JavaScipt quando mi è venuta la domanda:Concatenamento opzionale in JavaScript
C'è qualcosa di simile al concatenamento opzionale in JavaScript? Un modo per prevenire undefined is not an object
senza alcuna variabile?
Esempio:
function test(){
if(new Date() % 2){
return {value: function(){/*code*/}};
}
}
test().value();
mancherà la metà del tempo perché a volte test
rendimenti indefinito.
L'unica soluzione che viene in mente è una funzione:
function oc(object, key){
if(object){
return object[key]();
}
}
oc(test(), 'value');
Vorrei essere in grado di fare qualcosa di simile:
test()?.value()
La parte dopo il punto interrogativo viene eseguito solo se test
ha restituito un oggetto.
Ma questo non è molto elegante. C'è qualcosa di meglio? Una magica combinazione di operatori?
Modifica So che potrei riscrivere test
per restituire qualcosa. Ma mi chiedo se c'è qualcosa come il concatenamento opzionale. Non sono interessato a una soluzione specifica al precedente esempio . Qualcosa che posso usare anche se non ho il controllo sulla funzione di ritorno indefinito.
cosa si desidera value() per tornare quando test() restituisce undefined? –
@ZaheerAhmed falso o indefinito. Non importa davvero. – idmean
è possibile avvolgere la funzione esistente per restituire un valore predefinito in caso di non definito, senza riscrivere. puoi anche usare un ternario (x? y: z)() o un operatore predefinito (x || y)() al momento della chiamata. – dandavis