(I've also put this on reddit <https://www.reddit.com/r/javascript/comments/7129tn/proposal_resultforwarding_ternary_operator/>, which I've copied this from. Hope the formatting doesn't go haywire...)
First course of action for this proposal is, obviously, to come up with a better name for it.... Motivation As with the 'optional chaining' proposal for tc39 <https://github.com/tc39/proposal-optional-chaining>, this operator is a way to avoid excess and annoying code from safety-checking. The optional chaining proposal, above, follows a chain and short-circuits it upon acting on a null object, returning a safe '*undefined*' result; it can be thought of as an extended '*if*' sequence. It looks like this: // safeVal = result of someProp, or undefined if looking for props on null obj const safeVal = blah?.someMethod()?.someProp; This proposal provides for an '*else'* scenario, particularly in situations where chaining isn't appropriate, by forwarding the result of a truthy conditional check to a single-parameter function. Syntax *condition ?! fn : expr* Parameters - condition: any condition, *identical to use in standard ternary* - fn: function taking single parameter, which is the result of evaluating *condition* - expr: any expression, *identical to use in standard ternary* Usage Example // temporary variable const temp = getSomething(), foo = temp ? doSomething(temp) : doSomethingElse(); // repeated code, possible side-effects const foo2 = getSomething() ? doSomething(getSomething()) : doSomethingElse(); // proposal, no chaining const newFoo = getSomething() ?! x => doSomething(x) : doSomethingElse(); // proposal, chaining const newFoo = getSomething() ?! x => { doSomethingFirst(); return x.doSomething(); } : doSomethingElse(); Notes - The choice of '?!' is entirely arbitrary and not a core part of the proposal. - The result of the conditional check is not passed on to the falsey path, because it seems pointless to do so.
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

