试图理解js中的参数

时间:2013-07-04 03:40:16

标签: javascript

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 个答案:

答案 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)

Message是您传递给函数的第一个参数,在本例中是"H"arguments它是一个类似于数组的对象,它包含 all 您传递的参数英寸

一些信息:

答案 2 :(得分:1)

这里发生的事情是你在这里将5个参数传递给f。由于函数中只有一个参数,因此只有第一个参数被赋值给message

但是,如您所知,其他四个仍然在arguments伪数组中。

答案 3 :(得分:0)

您的函数f只有一个参数,并且您传递了 5个单独的值或参数,并且由于您只有一个参数可以接收它,因此只有1st parameter具有'H'的值是唯一接受的值。

答案 4 :(得分:0)

您的函数f只接受一个参数,即message。但是在函数调用期间,您传递了5个参数,即"H", "e", "l", "l", "o"。如果您希望在消息中提供所有这些内容,则可以使用以下任何一种方法传递:

  1. 单字符串f("Hello")
  2. 连接字符串f("H" + "e" + "l" + "l" + "o")
  3. 或将其作为数组f(["H", "e", "l", "l", "o"])
  4. 传递

    arguments变量是javascript的内部函数处理机制,即无论何时将参数传递给函数,它都会分配给函数在其签名中定义的变量,但这些变量的数组列表也保持在函数变量名为arguments。