2017-11-25 6 views
-1

Ich versuche zu verstehen, was die folgende Funktion gibt:Legendes ein Komma Anweisung

fs.api.services.wrapOnSuccess_ = function(a, b, c) { 
    if (b) return c = c || function() {}, 
     function(d, e, f) { 
      fs.isDefinedAndNotNull(d.debugtrace) && fs.api.services.handleDebugTrace_(d.debugtrace); 
      200 == d.meta.code ? (fs.api.getLogger().debug("success"), 
       b(a(d.response), fs.api.services.rawBundleSuccess_(d, e, f))) : 
      (fs.api.getLogger().error("non 200 meta code on api response", d), c(d.meta, fs.api.services.rawBundleSuccess_(d, e, f))) 
     } 

Ist es richtig, dass es da function(d,e,f){..} eine ternäre Funktion gibt auf der rechten Seite des Kommas ist? Wenn ja, heißt das, dass Anrufe an wrapOnSuccess_ so aussehen sollten wie wrapOnSuccess_(x,y,z)(s,t,u)?

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator –

+3

Mögliches Duplikat von [Was bewirkt ein Komma in JavaScript-Ausdrücken?] (Https: // stackoverflow. com/questions/3561043/Was-ist-ein-Komma-tun-in-Javascript-Ausdrücke) –

Antwort

0

Dies ist ein minimierter Code. Es ist nicht wirklich im typischen Sinne zu verstehen.

Soweit, was es gibt, wenn b truthy ist, wird es geben die function(d, e, f) { Funktion entweder nach c-c zuweisen, wenn c truthy war, sonst die no-op-Funktion zu c.

Also ja, Sie könnten sofort den Rückgabewert aufrufen, wennb truthy war. Sieht so aus, als ob wir den Rest der Funktion vermissen.

Beachten Sie, dass der Komma-Operator die niedrigste Priorität aller Operatoren hat. Das sollte helfen, Dinge herauszufinden.

+0

https://stackoverflow.com/questions/3561043/what-does-a-comma-do-in-javascript-expressions . –

+0

@ DannyFardyJonstonBermúdez: Das OP fragt speziell, wie es die gegebene Funktion beeinflusst. Die Operationen nach der Rückkehr sind verwickelt, so dass sie nicht sicher waren, was genau zurückgegeben wurde. –