JavaScript函數(shù)可以接受任意數(shù)量的參數(shù)。
Javascript函數(shù)參數(shù)存儲為數(shù)組樣結(jié)構(gòu)調(diào)用 arguments
。
參數(shù)
可以增長為包含任意數(shù)量的值。
這些值通過數(shù)字索引引用,并且有一個 length
屬性來確定 arguments
中有多少個值。
arguments
對象在任何函數(shù)內(nèi)部可用。
函數(shù)中的命名參數(shù)存在是為了方便起見不限制函數(shù)可以接受的參數(shù)的數(shù)量。
arguments
對象不是Array和的實例因此不具有與數(shù)組相同的方法。
Array.isArray(arguments)總是返回false。
JavaScript不會忽略命名參數(shù)的函數(shù)。
函數(shù)期望的參數(shù)數(shù)量存儲在函數(shù)“s length"屬性上。
length屬性指示其期望的參數(shù)的數(shù)量。
以下代碼顯示如何使用參數(shù)和函數(shù)長度。
function myMethod(value) { /*hgci.cn*/
return value;
}
console.log(myMethod("hgci.cn!"));
console.log(myMethod("hgci.cn!", 2));
console.log(myMethod.length);
myMethod = function() {
return arguments[0];
};
console.log(myMethod("hgci.cn!"));
console.log(myMethod("hgci.cn!", 2));
console.log(myMethod.length);
上面的代碼生成以下結(jié)果。
下面的代碼顯示了如何創(chuàng)建一個函數(shù)來對任意數(shù)量的參數(shù)求和。
function sum() { //hgci.cn
var result = 0,
i = 0,
len = arguments.length;
while (i < len) {
result += arguments[i];
i++;
}
return result;
}
console.log(sum(1, 2));
console.log(sum(13, 14, 15, 16));
console.log(sum(5,0));
console.log(sum());
上面的代碼生成以下結(jié)果。
JavaScript函數(shù)可以接受任意數(shù)量的參數(shù),并且不指定函數(shù)采用的參數(shù)類型。
JavaScript函數(shù)實際上沒有簽名。
Javascript功能不支持重載。
以下代碼顯示了聲明兩個具有相同名稱的函數(shù)時會發(fā)生什么:
function myMethod(message) {
console.log(message);
}
function myMethod() {
console.log("Default message");
}
myMethod("Hello!");
上面的代碼生成以下結(jié)果。
在JavaScript中,當定義具有相同名稱的多個函數(shù)時,在您的代碼中最后出現(xiàn)的一個wins。
我們可以使用 arguments
對象來模擬函數(shù)重載。
function writeLine(message) {
if (arguments.length === 0) {
message = "Default message";
}
console.log(message);
}
writeLine("Hello!");
writeLine("");
上面的代碼生成以下結(jié)果。
更多建議: