What the docs at Mozilla says:
console.log((function(...args) {}).length);
// 0, rest parameter is not counted
console.log((function(a, b = 1, c) {}).length);
// 1, only parameters before the first one with
// a default value is counted
So how will I ever be able to count parameters in such cases ?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length
There are two separate things going on here with parameters defined and arguments actually passed.
For a defined function, you can get access to the number of parameters that are defined in the definition of the function with
fn.length
:Separately, from within a function, you can see how many arguments are actually passed to a function for a given invocation of that function using
arguments.length
. Suppose you had a function that was written to accept an optional callback as the last argument:Not sure if this answers what you were asking... based on your examples though...
https://jsfiddle.net/hxm4smc1/555/