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

Reply via email to