Ternary operator enhancement proposal
Aside from the fact that using a non-reserved identifier would break back-compatibility, I'm fairly certain pattern matching would allow for not recalculating the value while also being far more readable.
I put forward a similar proposal a while back: esdiscuss.org/topic/proposal-result-forwarding-ternary-operator
Dammit babies, you've got to be kind.
Le 13 nov. 2019 à 03:43, devlato <ecma6 at devlato.com> a écrit :
Hey folks,
not sure if you haven't discussed something similar, but what do you think about making an enhancement for the ternary operator, to make it more powerful? I've created a small explanatory doc on GitHub: devlato/proposal-ternary-placeholder
Warmest , Denis
The generic problem is: you do some computation, and you want to reuse the result of that computation later.
The generic solution is to use a temporary variable:
// declare a temporary variable at the top of some scope
var _;
// later, use it:
const X = () => (_ = x?.y?.z) ? doSomethingWithValue(_) : null;
Now, you are not satisfied with the existing solution, and you want to avoid declaration of temporary variables in some outer scope...? Maybe:
const X = () => (#1 = x?.y?.z) ? doSomethingWithValue(#1) : null;
(Any similarity with developer.mozilla.org/en-US/docs/Archive/Web/Sharp_variables_in_JavaScript, developer.mozilla.org/en-US/docs/Archive/Web/Sharp_variables_in_JavaScript is not at all fortuitous.) However, I’m not convinced that the need to declare your temporary variables is such a problem that it is worth the introduction of new syntax.
the do
operator might be good enough
const z = do { const z = x?.y?.z; z ? doSomethingWithValue(z) : null; };
Also, this particular use case could be addressed by adding an equivalent of the stage 3 optional chaining operators to the proposed pipeline operator: tc39/proposal-pipeline-operator.
In this light, I've also filed an issue there: tc39/proposal-pipeline-operator#159
Isiah Meadows contact at isiahmeadows.com, www.isiahmeadows.com
Hey folks,
not sure if you haven't discussed something similar, but what do you think about making an enhancement for the ternary operator, to make it more powerful? I've created a small explanatory doc on GitHub: devlato/proposal-ternary-placeholder
Warmest , Denis