Function length
Irakli Gozalishvili
rfobic at gmail.com
Sat Jun 9 18:52:50 PDT 2012
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/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20120609/9f629bc4/attachment.html>
More information about the es-discuss
mailing list