Объект arguments — это объект типа Array, соответствующий аргументам, переданным функции. Вы можете использовать это для обработки параметров рекурсивных функций. Чтобы определить количество параметров в сигнатуре функции, используйте свойство 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"
Очевидно, что это действительно простая функция, и нам нужно проверять типы (чтобы объединять только строки) и т. Д. Но если функция ожидает параметры, вам нужно изменить индекс функции слайса:
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: "HelloFromOur Code World"
Создание списка HTML
Мы собираемся создать html-список со всеми полученными параметрами, но мы ожидаем тип списка в первом параметре (ul или ol), поэтому:
function CreateList(listType){
var args = Array.prototype.slice.call(arguments, 1);// Expects the first parameter
var html = "";
for(var i = 0;i < args.length;i++){
var item = args[i];
html += ''+item+' ';
}
html += "";
return html;
}
CreateList("ul","Hello","From","Our","Code","World");
// Outputs : - Hello
- From
- Our
- Code
- World