How about you all take a look here: https://github.com/tc39/proposal-logical-assignment
Originally, it was at <https://github.com/tc39/proposal-nullish-coalescing>, but here <https://github.com/tc39/proposal-nullish-coalescing/issues/1>, it was discussed and pushed off to the logical assignment proposal as it was also a short-circuiting operator, even though it wasn't really a *boolean* operator. ----- Isiah Meadows m...@isiahmeadows.com www.isiahmeadows.com On Wed, Jul 4, 2018 at 10:25 PM, Sam Ruby <ru...@intertwingly.net> wrote: > On Wed, Jul 4, 2018 at 7:12 PM, Jacob Pratt <jhpratt...@gmail.com> wrote: >> I've been having this thought recently, after running across a potential use >> case in practice. There will likely be conditional accessors at some point >> in the future (with optional chaining), but there will not be conditional >> assignment. >> >> My thought was to have the following: >> this.foo ?= params?.foo; >> which can be desugared to >> if (($ref = params?.foo) !== undefined) { this.foo = $ref; } >> >> I would strictly check for undefined, rather than nullish, as anything other >> than undefined would indicate that a value is present that can be set. If no >> value is present (such as a missing key on an object), nothing would be set. >> A reference must be used for the general case, as the object being assigned >> (the RHS) could be a function or getter with side-effects. >> >> Not sure if it should be ?= or =?, as it would look somewhat odd (IMO) for >> things like ?+= or +=?. >> >> Initial thoughts? > > Perl and Ruby have "||=" and "&&=" operators. They don't strictly > check for undefined in either language. > > These operators are frequently used (in particular, "||="). I do miss them. > > Looking at the node.js source: > > $ find . -name '*.js' -type f | xargs egrep ' (\S+) = \1 \|\| ' | wc -l > 1416 > > $ find . -name '*.js' -type f | xargs egrep ' if \(!(\S+)\) \1 = ' | wc -l > 497 > > Nearly 2K occurrences in one code base. > >> Jacob Pratt > > - Sam Ruby > _______________________________________________ > 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