【发布时间】:2015-02-04 00:06:59
【问题描述】:
只是想知道为什么我在使用以下简单的 JavaScript 函数时会出错
function highest(){
return arguments.sort(function(a,b){
return b - a;
});
}
highest(1, 1, 2, 3);
错误信息:TypeError: arguments.sort 不是函数。
我对参数感到困惑,它是一个数组(我认为)。请帮助并解释原因。非常感谢
【问题讨论】:
-
那是因为
arguments不是一个数组,看看这个demo。这是一个Arguments Object,它的作用就像一个数组。由本机函数返回的许多类似数组的对象也是如此,例如.getElementsByClassName,它返回一个HTMLCollection对象。 -
“我对参数感到困惑,它是一个数组。”
arguments不是一个数组。它有一个长度和索引属性,但如果你检查arguments instanceof Array,你会注意到它是false(还有Object.prototype.toString.call(arguments) === '[object Arguments]')。因此,它没有来自Array.prototype的方法,包括sort。 -
好吧,这不是数组,我一直认为它是一个数组,因为我做了 arguments[0], arguments[1] 。为什么我会得到否定的结果....但是感谢我为我清除了一切
标签: javascript