只是想知道为什么我使用以下简单的JavaScript函数出错了
function highest(){
return arguments.sort(function(a,b){
return b - a;
});
}
highest(1, 1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
错误消息:TypeError:arguments.sort不是函数.
我很困惑,因为它是一个数组(我想).请帮忙解释原因.非常感谢
Ori*_*iol 18
因为arguments没有sort方法.请注意,arguments它不是一个Array对象,它是一个类似于数组的Arguments对象.
但是,您可以使用Array.prototype.slice转换arguments为数组; 然后你就可以使用Array.prototype.sort:
function highest(){
return [].slice.call(arguments).sort(function(a,b){
return b - a;
});
}
highest(1, 1, 2, 3); // [3, 2, 1, 1]
Run Code Online (Sandbox Code Playgroud)
使用扩展语法将参数转换为真正的数组:
function highest(...arguments){
return arguments.sort(function(a,b){
return b - a;
});
}
highest(1, 1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
输出: (4) [3, 2, 1, 1]
| 归档时间: |
|
| 查看次数: |
39517 次 |
| 最近记录: |