<div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px">ignoring/skipping argument in functions declarations (indeed the invocations could be let apart)</span></blockquote><div><br></div><div>I am of the opinion that this is not a problem that needs to be solved at the language standardization level. The commas (or really any separator) for "skipping" a parameter looks like a mistake and is unintuitive (it's certainly not obvious to me what its intent is had I seen it without the context of this thread).</div><div><br></div><div>This seems like a problem solved with better coding practices. I typically make required parameters first and then any optional ones in a separate, single parameter called options. Callbacks can be done with chaining / promises / I fmake them required / etc. Skipping callbacks usually isn't a good idea. We could talk all day about who's coding practice is better than who's but ultimately this problem should be solved by developing / adopting good coding practices.</div><div><br></div><div>(Honestly I'm not a fan of the skipping in arrays either but considering it's an array I feel like it's at least a magnitude less confusing than doing it with function parameters)</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 11, 2016 at 4:00 AM, Cyril Auburtin <span dir="ltr"><<a href="mailto:cyril.auburtin@gmail.com" target="_blank">cyril.auburtin@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">> <span style="font-size:12.8px">Confused by this thread.</span><span style="font-size:12.8px"></span><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">It's quite simple though, _ would be a useless allocated variable, you an't have more than 1, ...</span></div><span class=""><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">> </span><span style="font-size:12.8px">What is the problem that this proposal is trying to solve?</span></div><div><span style="font-size:12.8px"><br></span></div></span><div><span style="font-size:12.8px">ignoring/skipping argument in functions declarations (indeed the invocations could be let apart)</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">> `Math.min(x,,y)`</span><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">yes this kind of thing would give NaN, that's why you can </span><span style="font-size:12.8px">`Math.min(x, , y)` write it with more spaces to avoid a typo mistake, indeed you could still have like </span><span style="font-size:12.8px">`Math.min(x, /*y (no longer used)*/ , z)` would. Like said above, I realize the function invocations are sensible.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">So, it would be only for function declarations</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">`div.addEventListener('click', () => { } )` says to skip all arguments, and you've your callback scope is free of any additional vars</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">`arr.forEach( x => { } )` says to only consider first argument, others are skipped, and not in scope</span><span style="font-size:12.8px"><br></span></div><div><br></div><div><span style="font-size:12.8px">`Array.from({length: 19}, (, i) => i )` would be similar for the second argument, similarly to array destructuring. It's not just for saving one character, that's really not the matter, it's for standardizing this way, because some people use `_`, some don't, ....</span><span style="font-size:12.8px"><br></span></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2016-08-10 16:27 GMT+02:00 Bob Myers <span dir="ltr"><<a href="mailto:rtm@gol.com" target="_blank">rtm@gol.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Confused by this thread.<span><div><br></div><div>> <span style="font-size:12.8px">What if you could use a `.` as a wildcard?</span><span style="font-size:12.8px"> </span></div><div><span style="font-size:12.8px"><br></span></div></span><div><span style="font-size:12.8px">You can already use `_` or anything you want, as was already pointed out in early iterations of this idea.</span></div><span><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">> </span><span style="font-size:12.8px">it would avoid binding a usable identifier.</span></div><div><span style="font-size:12.8px"><br></span></div></span><div><span style="font-size:12.8px">What is the problem with that?</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">What is the problem that this proposal is trying to solve? Any chance we could move on?</span></div><span><font color="#888888"><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Bob</span></div><div><span style="font-size:12.8px"><br></span></div><div><br></div></font></span></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 10, 2016 at 7:48 PM, Alan Johnson <span dir="ltr"><<a href="mailto:alan@breakrs.com" target="_blank">alan@breakrs.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">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.<div><br></div><div><br><div><blockquote type="cite"><div>On Aug 8, 2016, at 06:33, Cyril Auburtin <<a href="mailto:cyril.auburtin@gmail.com" target="_blank">cyril.auburtin@gmail.com</a>> wrote:</div><br><div><div dir="ltr"><div>Just bumping this up</div><div><br></div><div>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])<br></div><div><br></div><div>Other example:</div><div><div>```</div><div>var m=new Map([[1], [2,], [3,7]]) // Map {1 => undefined, 2 => undefined, 3 => 7} // here commas fantasies are allowed in arrays</div><div>m.set(3) // Map {1 => undefined, 2 => undefined, 3 => undefined} // setting implicitely value as undefined</div><div>m.set(3, ) // not allowed, which should be m.set(...[3,])<br></div><div>```</div></div><div><br></div><div>and again, it would help for callbacks too, `something( ( , , thirdArg) => {} )`</div><div><br></div><div>I saw this <a href="https://jeffmo.github.io/es-trailing-function-commas/" target="_blank">https://jeffmo.github.io/es-tr<wbr>ailing-function-commas/</a>, it seems like a sub-case<br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-05-29 23:07 GMT+02:00 Renki Ivanko <span dir="ltr"><<a href="mailto:fatalis.erratum@gmail.com" target="_blank">fatalis.erratum@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">One more similarity is that both function parameters and destructuring allow default values: (foo = 1) vs [foo = 1].<div><br></div><div><br></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, May 29, 2016 at 11:56 PM, Cyril Auburtin <span dir="ltr"><<a href="mailto:cyril.auburtin@gmail.com" target="_blank">cyril.auburtin@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><span style="font-size:12.8px">Since functions arguments is an array under the hood, they could 'more behave the same'</span><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Both function arguments and arrays accept spreading: <i>[1, 2, ...args] </i> and <i>fn(1, 2, ...args)</i></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><span style="font-size:12.8px">a function definition like </span><i style="font-size:12.8px">(,i) => {}</i><span style="font-size:12.8px">, would be </span><span style="font-size:12.8px">the equivalent of</span><span style="font-size:12.8px"> </span><i style="font-size:12.8px">var [,i] = arguments</i></div><span><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">an invocation <i>fn(,,i)</i> would be the equivalent of <i>[,,i]</i></div><div style="font-size:12.8px"><i><br></i></div></span><div style="font-size:12.8px">It's possible<span style="font-size:12.8px"> with </span><i style="font-size:12.8px">(...[,i]) => {}, (_,i)=>{} </i><span style="font-size:12.8px">like Renki said, but slightly less simply</span></div><div style="font-size:12.8px"><span style="font-size:12.8px"><br></span></div><div style="font-size:12.8px"><span style="font-size:12.8px">Are there possible issues with that 'extension' of function syntax?</span></div><div style="font-size:12.8px"><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><span>2016-05-29 21:32 GMT+02:00 Renki Ivanko <span dir="ltr"><<a href="mailto:fatalis.erratum@gmail.com" target="_blank">fatalis.erratum@gmail.com</a>></span>:<br></span><div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">You could stop with "rare"; having to make up unused names is an obvious smell in comparison.<div><br></div><div>```js</div><div>foo(UNUSED1, UNUSED2, x)<br></div><div><br></div><div>foo(_, __, x)</div><div><br></div><div><div>foo(,, x)</div></div><div><br></div><div>foo(...[,, x])</div><div>```</div><div><br></div><div>The latter is shorter and more explicit and would not be any more confusing if it became common. </div><div><div><br></div></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, May 29, 2016 at 8:46 PM, Bob Myers <span dir="ltr"><<a href="mailto:rtm@gol.com" target="_blank">rtm@gol.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">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:<div><br></div><div>```js</div><div>function foo(UNUSED1, UNUSED2, x)</div><div>````</div><div><br></div><div>Most linters will not complain, or there are ways to shut them up if they do.</div><div><br></div><div>If you want to throw away an argument, just throw it away.</div><div><br></div><div>```js</div><div>function skipFirstParam(fn) { return ((first, ...args) => fn(...args)); }</div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">`[1,2,3,4].map(skipFirstParam(<wbr>i => i));</span><br></div><div><br></div><div>```</div><div><br></div><div>Or use Renki's solution.</div><span><font color="#888888"><div><br></div><div>Bob</div><div><br></div></font></span></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Sun, May 29, 2016 at 9:23 PM, Cyril Auburtin <span dir="ltr"><<a href="mailto:cyril.auburtin@gmail.com" target="_blank">cyril.auburtin@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><div dir="ltr"><div>Similarly to:</div><div><br></div><div>`var [,x,,y] = [1,2,3,4,5,6];`</div><div><br></div><div>I think it could be interesting to let a field empty in function arguments</div><div><br></div><div>`[1,2,3,4].map( (,i) => i )`, `Array.from({length:10}, (,i) => i )`</div><div><br></div><div>`function test(a,,b) { }`</div><div><br></div><div>(but that would alter the current parsing, that doesn't allow it)</div><div><br></div><div>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</div></div>
<br></div></div><span>______________________________<wbr>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listi<wbr>nfo/es-discuss</a><br>
<br></span></blockquote></div><br></div>
<br>______________________________<wbr>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listi<wbr>nfo/es-discuss</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div></div></div><br></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div></div>
______________________________<wbr>_________________<br>es-discuss mailing list<br><a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br><a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listi<wbr>nfo/es-discuss</a><br></div></blockquote></div><br></div></div><br>______________________________<wbr>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listi<wbr>nfo/es-discuss</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div><br>______________________________<wbr>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/<wbr>listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>