arguments对象是类似于数组的对象, 与传递给函数的参数相对应。你可以将其用于处理递归函数参数。要确定函数签名中的参数数量, 请使用length属性。
分析下面的示例, JoinStringsInFunctions将返回一个字符串, 该字符串由每个参数中所有给定的字符串组成:
// Note that the function doesn't expect any argument yet !
function JoinStringsInFunctions() {
var receivedArguments = Array.prototype.slice.call(arguments, 0);// This will make the arguments as an array and will include all the items on it
return receivedArguments.join("-");
}
// Then execute
var finalText = JoinStringsInFunctions("Hello", "From", "Our Code World");
console.log(finalText); // Output : "Hello-From-Our Code World"
显然, 这是一个非常简单的函数, 我们需要检查类型(仅连接字符串)等。但是, 如果该函数需要参数, 则需要更改slice函数的索引:
function JoinStringsInFunctions(separator) {
// change the 0 to 1 to expect the first parameter
var receivedArguments = Array.prototype.slice.call(arguments, 1);
return receivedArguments.join(separator);
}
// Then execute
var mySeparator = "< - >";
var finalText = JoinStringsInFunctions(mySeparator, "Hello", "From", "Our Code World");
console.log(finalText); // Output: "Hello< - >From< - >Our Code World"
创建一个HTML列表
我们将使用所有接收到的参数创建一个html列表, 但是我们期望第一个参数(ul或ol)中的列表类型为:
function CreateList(listType){
var args = Array.prototype.slice.call(arguments, 1);// Expects the first parameter
var html = "<"+listType+">";
for(var i = 0;i < args.length;i++){
var item = args[i];
html += '<li>'+item+'</li>';
}
html += "</"+listType+">";
return html;
}
CreateList("ul", "Hello", "From", "Our", "Code", "World");
// Outputs : <ul><li>Hello</li><li>From</li><li>Our</li><li>Code</li><li>World</li></ul>
评论前必须登录!
注册