[英]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;
}
這里發生的是您要在此處將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"])
傳遞 arguments
變量是javascript的一種內部函數處理機制,即,每當您將參數傳遞給函數時,它就被分配給函數在其簽名中定義的變量,但是這些變量的數組列表也保留在稱為arguments的函數變量中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.