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"]
?
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"]
?
您正在向函数传递 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 变量是一个特殊变量,包含函数的所有参数。
因为您可以使用 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;
}
这里发生的事情是你在这里将 5 个参数传递给 f 。由于函数中只有一个参数,因此只有第一个参数分配给message
.
但是,如您所知,其他四个仍然在arguments
伪数组中。
您的函数f
只有一个参数,并且您正在传递5 个单独的值或参数,并且由于您只有一个参数来接收它,因此只有1st parameter
具有“H”值的参数是唯一接受的。
您的函数f
只接受一个参数,即message
. 但是在函数调用期间,您传递了 5 个参数,即"H", "e", "l", "l", "o"
. 如果您希望所有这些都在消息中可用,则可以使用以下任何一种方法通过:
f("Hello")
中。f("H" + "e" + "l" + "l" + "o")
f(["H", "e", "l", "l", "o"])
变量是javascript的arguments
内部函数处理机制,即每当您将参数传递给函数时,它都会分配给函数在其签名中定义的变量,但这些变量的数组列表也保存在称为参数的函数变量中。