我需要将传递给函数的参数连接在一起并将它们作为字符串返回,我记得在某处读取Javascript使用特殊类型的数组来存储参数。当我试图调用arguments.join("")
时,我收到运行时错误,告诉我没有这样的方法。
为什么Javascript不使用引用指向参数名称来存储标准数组中的参数?
答案 0 :(得分:4)
arguments
特殊的一种方式是它实际上直接引用参数。 JavaScript中不可能使用常规Array实例。
function foo( param ) {
arguments[0] = "changed";
alert( param ); // says "changed"
}
foo( "original" );
现在是否是"功能"或不是一个值得商榷的问题;我不记得将它用于除了制造刺激性错误之外的任何目的。重点是,拥有一个普通的数组实例会以某种方式具有相当离奇的行为(用JavaScript术语来说奇怪)会打开各种奇怪的问题。
编辑 - 它在评论中指出,可以使用可以模仿此行为的setter和getter创建一个Array实例。在我自己的代码中以编程方式进行编程是很困难的(以某种一般方式,而不是在临时的基础上,我的意思),但显然运行时可以做到这一点。
答案 1 :(得分:2)
这实际上是JavaScript中的设计错误。
你可以把它转换成这样的真实数组:
var args = Array.slice(arguments);
或旧浏览器中的这个:
var args = Array.prototype.slice.call(arguments, 0);
答案 2 :(得分:1)
虽然您无法直接在Array
上调用arguments
方法,但您可以使用call
调用Array
方法,因为它具有类似于数组的功能:
Array.prototype.join.call(arguments, "");