I just noticed strange behavior in spider monkey implementation of rest 
arguments: 

(function(a, b, ...rest) {}).length // => 2

I think ignoring `rest` in length is pretty counter intuitive. For example I 
have small utility function that
I use to dispatch depending on argument length.

var sum = dispatcher([
  function() { return 0 },
  function(x) { return x },
  function(x, y) { return x + y },
  function(x, y, z) { return Array.prototype.slice.call(arguments, 
1).reduce(sum, x) }
]) 

This behavior of rest would obviously break assumptions made by this library. 
That being said I don't think `3` would be any better. Maybe such functions 
length should be:

- Infinity ?
- 2.5 ?

That way libraries would be able to handle them in a nice way:

var sum = dispatcher([
  () => 0,
  (x) => x,
  (x, y) => x + y,
  (x, ...rest) => rest.reduce(sum, x)
])


Regards
--
Irakli Gozalishvili
Web: http://www.jeditoolkit.com/

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to