What about allowing any expression then?

x || 4
x/4
x + 4
x + w //maybe allow only "previous" parameter values as scope
x + a //SyntaxError: 'a' undefined in parameters scope

On Tue, 13 Oct 2020 at 14:39, Michael Luder-Rosefield <
rosyatran...@gmail.com> wrote:

> I know I am not the only one who has had several perfectly good use-cases
> for default values disallowed, because the value coming in was `null`, not
> `undefined`.
>
> I cannot be the only one who has let bugs slip in because of failing to
> consider this case.
>
> So, if we can find a non-confusing and simple way to alter the spec to
> allow for handling this, I imagine it would be considered useful and wanted.
>
> The obvious candidate is the nullish coalescing operator, which is already
> part of the spec. Unfortunately, it is currently invalid to indicate
> default values with it. I can't see any reason against changing this.
>
> ```
> function foo1 (x = 4) {
>   console.log(x);
> }
>
> // currently causes SyntaxError
> function foo2 (x ?? 4) {
>   console.log(x);
> }
>
> foo1(null); // null
> foo1(undefined) // 4
>
> foo2(null); // 4
> foo2(undefined) // 4
>
> // currently causes SyntaxError
> // should give x === null, y === 4
> const { x = 2, y ?? 4 } = { x: null, y: null };
> ```
> --------------------------
> Dammit babies, you've got to be kind.
> _______________________________________________
> 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