Modifying |arguments| with [].splice is broken: function argc() { return arguments.length } function test() { [].splice.call(arguments, 0, 0, 1); return [ arguments.length, argc.apply(null, arguments) ]; } test() // [1, 0] test(1) // [2, 1] test(1,2) // [3, 2] test(1,2,3) // [4, 3]
This works now, hey!