ES6使用剩余参数
如果能够使用ES6,则可以使用:
休息参数
function sortArgs(...args) { return args.sort(function (a, b) { return a - b; });}document.body.innerHTML = sortArgs(12, 4, 6, 8).toString();rest参数语法允许我们将不确定数量的参数表示为数组。
ES6使用Array.from()
使用 Array.from :
function sortArgs() { return Array.from(arguments).sort(function (a, b) { return a - b; });}document.body.innerHTML = sortArgs(12, 4, 6, 8).toString();Array.from只需将类似Array或Iterable的对象转换为Array实例。
ES5
实际上,你可以只使用
Array的
slice一个参数对象的功能,这将其转换成一个标准的Javascript数组。您只需要通过Array的原型手动引用它即可:
function sortArgs() { var args = Array.prototype.slice.call(arguments); return args.sort();}为什么这样做?好吧,这是ECMAscript 5文档本身的摘录:
注意 :该
slice函数是有意通用的;它不需要此值是Array对象。因此,可以将其转移到其他类型的对象中作为一种方法。该
slice功能是否可以成功应用于主机对象取决于实现。
因此,
slice可以在任何具有
length属性的东西上正常工作
arguments。
如果
Array.prototype.slice对您来说太麻烦了,您可以使用数组文字来略微缩写:
var args = [].slice.call(arguments);
但是,我倾向于认为以前的版本更为明确,因此我宁愿选择它。滥用数组字面量表示法会让人觉得很棘手,而且看起来很奇怪。



