function paramCount() { return arguments.length } function Bar(size, order) { this.size = size; Bar.checkOrder(order); } Bar.order = 0; Bar.hasOrderProblem = false; Bar.checkOrder = function (expectedOrder) { var curOrder = Bar.order++; Bar.hasOrderProblem = Bar.hasOrderProblem || curOrder !== expectedOrder; }; Bar.startNewTest = function () { Bar.hasOrderProblem = false; Bar.order = 0; return true; }; Bar.prototype.test = function (order, dummy /*, args */) { Bar.checkOrder(order); return dummy === 1 && (arguments.length - 2) === this.size; }; Bar.prototype.test2 = Bar.prototype.test; function test3(bar, dummy /*, args */) { return dummy === 1 && (arguments.length - 2) === bar.size; } var obj = { test: function (size /*, args */) { return (arguments.length - 1) === size; } }; function testNativeVarargWithFunLit(/* args, f */) { var args = Array.prototype.slice.call(arguments, 0, arguments.length - 1); var f = arguments[arguments.length - 1]; return typeof f === "function" && f(args); } function sumOfParameters() { var size = arguments.length; var result = 0; for (var i = 0; i < size; i++) { result += arguments[i]; } return result; } function sumFunValuesOnParameters() { var size = arguments.length - 1; var f = arguments[arguments.length - 1]; var result = 0; for (var i = 0; i < size; i++) { var u = arguments[i]; result += f(u); } return result; } function idArrayVarArg() { var args = Array.prototype.slice.call(arguments, 0, arguments.length); return args; } function join(...args) { return args.join("-"); } function mapJoin(f, ...args) { return args.map(x => f(x)).join("-") }