Optional assignment operator
Isiah Meadows
isiahmeadows at gmail.com
Thu Jul 5 07:08:33 UTC 2018
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
me at isiahmeadows.com
www.isiahmeadows.com
On Wed, Jul 4, 2018 at 10:25 PM, Sam Ruby <rubys at intertwingly.net> wrote:
> On Wed, Jul 4, 2018 at 7:12 PM, Jacob Pratt <jhprattdev at 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 at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
More information about the es-discuss
mailing list