Ignoring arguments
Alan Johnson
alan at breakrs.com
Wed Aug 10 14:18:28 UTC 2016
What if you could use a `.` as a wildcard? I don’t think it would conflict with existing syntax, and it would avoid binding a usable identifier. It would be more obvious than nothing between the commas.
> On Aug 8, 2016, at 06:33, Cyril Auburtin <cyril.auburtin at gmail.com> wrote:
>
> Just bumping this up
>
> Calling `foo(1)` where foo is defined with 3 arguments, lets the 2 others undefined, this behavior is already a bit magic and similar to the behavior of an array, so I still think foo(a,,b,,,c) should be like foo(...[a,,b,,,c])
>
> Other example:
> ```
> var m=new Map([[1], [2,], [3,7]]) // Map {1 => undefined, 2 => undefined, 3 => 7} // here commas fantasies are allowed in arrays
> m.set(3) // Map {1 => undefined, 2 => undefined, 3 => undefined} // setting implicitely value as undefined
> m.set(3, ) // not allowed, which should be m.set(...[3,])
> ```
>
> and again, it would help for callbacks too, `something( ( , , thirdArg) => {} )`
>
> I saw this https://jeffmo.github.io/es-trailing-function-commas/ <https://jeffmo.github.io/es-trailing-function-commas/>, it seems like a sub-case
>
> 2016-05-29 23:07 GMT+02:00 Renki Ivanko <fatalis.erratum at gmail.com <mailto:fatalis.erratum at gmail.com>>:
> One more similarity is that both function parameters and destructuring allow default values: (foo = 1) vs [foo = 1].
>
>
>
> On Sun, May 29, 2016 at 11:56 PM, Cyril Auburtin <cyril.auburtin at gmail.com <mailto:cyril.auburtin at gmail.com>> wrote:
> Since functions arguments is an array under the hood, they could 'more behave the same'
>
> Both function arguments and arrays accept spreading: [1, 2, ...args] and fn(1, 2, ...args)
>
> a function definition like (,i) => {}, would be the equivalent of var [,i] = arguments
>
> an invocation fn(,,i) would be the equivalent of [,,i]
>
> It's possible with (...[,i]) => {}, (_,i)=>{} like Renki said, but slightly less simply
>
> Are there possible issues with that 'extension' of function syntax?
>
>
> 2016-05-29 21:32 GMT+02:00 Renki Ivanko <fatalis.erratum at gmail.com <mailto:fatalis.erratum at gmail.com>>:
> You could stop with "rare"; having to make up unused names is an obvious smell in comparison.
>
> ```js
> foo(UNUSED1, UNUSED2, x)
>
> foo(_, __, x)
>
> foo(,, x)
>
> foo(...[,, x])
> ```
>
> The latter is shorter and more explicit and would not be any more confusing if it became common.
>
>
> On Sun, May 29, 2016 at 8:46 PM, Bob Myers <rtm at gol.com <mailto:rtm at gol.com>> wrote:
> Eliding array elements is not "similar" to eliding function formal parameters. The latter is extremely rare, hardly readable, confusing, bug-prone, and unnecessary because there is already a "standard way" which is to use any old parameter name you want:
>
> ```js
> function foo(UNUSED1, UNUSED2, x)
> ````
>
> Most linters will not complain, or there are ways to shut them up if they do.
>
> If you want to throw away an argument, just throw it away.
>
> ```js
> function skipFirstParam(fn) { return ((first, ...args) => fn(...args)); }
>
> `[1,2,3,4].map(skipFirstParam(i => i));
>
> ```
>
> Or use Renki's solution.
>
> Bob
>
>
> On Sun, May 29, 2016 at 9:23 PM, Cyril Auburtin <cyril.auburtin at gmail.com <mailto:cyril.auburtin at gmail.com>> wrote:
> Similarly to:
>
> `var [,x,,y] = [1,2,3,4,5,6];`
>
> I think it could be interesting to let a field empty in function arguments
>
> `[1,2,3,4].map( (,i) => i )`, `Array.from({length:10}, (,i) => i )`
>
> `function test(a,,b) { }`
>
> (but that would alter the current parsing, that doesn't allow it)
>
> Currently I often use `_` as a way to mark ignored fields, but when there are more than 1 you need another identifier. A standard way would be interesting rather
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
> https://mail.mozilla.org/listinfo/es-discuss <https://mail.mozilla.org/listinfo/es-discuss>
>
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
> https://mail.mozilla.org/listinfo/es-discuss <https://mail.mozilla.org/listinfo/es-discuss>
>
>
>
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20160810/e234f690/attachment-0001.html>
More information about the es-discuss
mailing list