function f(message)
{
console.log(message,arguments);
}
f("H", "e", "l", "l", "o");
显示:H + [“H”,“e”,“l”,“l”,“o”]
问题:
为什么邮件只显示H
,而不显示["H", "e", "l", "l", "o"]
?
答案 0 :(得分:4)
您正在向函数传递5个参数:
function test(arg1,arg2,arg3){
console.log(arg1);//=1
console.log(arg2);//=2
console.log(arg3);//=3
console.log(arguments);//[1,2,3,4,5]
}
test(1,2,3,4,5);
arguments变量是一个包含所有函数参数的特殊变量。
因为你可以使用参数变量,所以你可以完全忽略arg1,arg2,arg3部分:
function test(){
console.log(arguments[0]);//=1
console.log(arguments[1]);//=2
console.log(arguments[2]);//=3
console.log(arguments);//[1,2,3,4,5]
}
test(1,2,3,4,5);
通常人们不会这样做,因为它不清楚传递给函数的内容。为了更清楚你的函数应该返回什么以及你应该传递给它的变量,你可以使用JSDoc。许多IDE使用它来在自动完成/代码协助时显示有关该方法的更多信息。
/**
* Gets user By Id
* @param {Number} id
* @returns {User}
*/
var getUserById=function(id){
return u;
}
答案 1 :(得分:1)
答案 2 :(得分:1)
这里发生的事情是你在这里将5个参数传递给f。由于函数中只有一个参数,因此只有第一个参数被赋值给message
。
但是,如您所知,其他四个仍然在arguments
伪数组中。
答案 3 :(得分:0)
您的函数f
只有一个参数,并且您传递了 5个单独的值或参数,并且由于您只有一个参数可以接收它,因此只有1st parameter
具有'H'的值是唯一接受的值。
答案 4 :(得分:0)
您的函数f
只接受一个参数,即message
。但是在函数调用期间,您传递了5个参数,即"H", "e", "l", "l", "o"
。如果您希望在消息中提供所有这些内容,则可以使用以下任何一种方法传递:
f("Hello")
。f("H" + "e" + "l" + "l" + "o")
f(["H", "e", "l", "l", "o"])
arguments
变量是javascript的内部函数处理机制,即无论何时将参数传递给函数,它都会分配给函数在其签名中定义的变量,但这些变量的数组列表也保持在函数变量名为arguments。