簡體   English   中英

試圖了解js中的參數

[英]trying to understand arguments in js

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;
}

Message是您要傳遞給該函數的第一個參數,在本例中為"H" ,它的arguments是類似數組的對象,其中包含您傳入的所有參數。

一些信息:

這里發生的是您要在此處將5個參數傳遞給f。 由於函數中只有一個參數,因此只有第一個參數分配給message

但是,正如您所知,其他四個仍在偽數組arguments

您的函數f只有一個參數,並且您要傳遞5個單獨的值或參數,並且由於只有一個參數要接收它,所以只有第1st parameter值為“ H”才被接受。

您的函數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"])傳遞

arguments變量是javascript的一種內部函數處理機制,即,每當您將參數傳遞給函數時,它就被分配給函數在其簽名中定義的變量,但是這些變量的數組列表也保留在稱為arguments的函數變量中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM