I often find myself wanting to do this in the case of `while`. I've been writing
``` for (let a; a = someLongCondition();) { doSomethingWith(a); } ``` In that spirit, an oddball proposal: ``` while (let a = someLongCondition(); a) { ...use a... } if (let a = someLongCondition(); a) { ...use a... } ``` On Fri, Sep 16, 2016 at 2:39 AM, Isiah Meadows <isiahmead...@gmail.com> wrote: > I say let's hold off until JavaScript gets pattern matching support > (assuming it does). It's rather limiting otherwise, and the use case IMHO > doesn't really merit a new syntax for it. > > On Thu, Sep 15, 2016, 15:47 Jeremy Martin <jmar...@gmail.com> wrote: > >> > If yes ... why would anyone write that ? >> >> I think it would have to be "yes" (and that's probably just a contrived >> example that doesn't demonstrate the usefulness). >> >> Slightly less contrived, I could see the value in this, though. E.g., >> >> ``` >> router.get('/user', (req, res, next) => { >> if (let user = req.session.user) { >> // do stuff with user here >> } else { >> res.status(401).end(); >> } >> }); >> ``` >> >> I don't think it works as cleanly with `var`, but `const` and `let` has >> some nice precedence with for-statements. >> >> >> On Thu, Sep 15, 2016 at 2:45 PM, Andrea Giammarchi < >> andrea.giammar...@gmail.com> wrote: >> >>> > if( let a = ( let b = 10 ) * 3 > 10 ) >>> >>> I've honestly no idea, at first/quick read, what the hell that would >>> produce. >>> >>> Is `a` going to be just `true` ? 'cause if not, this proposal violates >>> operator precedence. >>> >>> If yes ... why would anyone write that ? >>> >>> On Thu, Sep 15, 2016 at 7:30 PM, J Decker <d3c...@gmail.com> wrote: >>> >>>> Why not more generally - allow let/var declarations in expressions? >>>> >>>> coming from a long and rich C background, I have no issues with the >>>> existing mechanisms... but for those languages that do support variable >>>> declarations in for loops; I've always wondered why not any expression? >>>> >>>> if( let a = ( let b = 10 ) * 3 > 10 ) >>>> ... or ... >>>> >>>> c = (let a = b*d) >>>> >>>> granted, the scope is extremely limited in the last case... >>>> >>>> _______________________________________________ >>>> es-discuss mailing list >>>> es-discuss@mozilla.org >>>> https://mail.mozilla.org/listinfo/es-discuss >>>> >>>> >>> >>> _______________________________________________ >>> es-discuss mailing list >>> es-discuss@mozilla.org >>> https://mail.mozilla.org/listinfo/es-discuss >>> >>> >> >> >> -- >> Jeremy Martin >> 661.312.3853 >> http://devsmash.com >> @jmar777 >> _______________________________________________ >> es-discuss mailing list >> es-discuss@mozilla.org >> https://mail.mozilla.org/listinfo/es-discuss >> > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss