Как сделать чтобы функция принимала неограниченное количество аргументов?


#1

Добрый день, помогите пожалуйста, мне нужно сделать чтобы функция принимала неограниченное количество параметров и выбирала из них самое большое, как это можно осуществить? Передать массив чисел? Пожалуйста с кодом, заранее благодарю


#2

Добрый, это не сложно, каждая функция на самом деле это не просто синтаксическая единица, это как тип данных, и любая функция это объект, то есть она содержит в себе разные свойства (значения) которые позволят создавать более интересные сценарии, сейчас покажу пример решения твоей задачи и расскажу что к чему. Вот код:





Функции





Так, начнем с начала, мы создаем функцию которая принимает два аргумента, эта функция должна показать максимальное значение элемента из переданных в неё, далее, после окончания функции мы создаем переменную результат и в неё вкладываем значение которое придет из функции которую мы тут же вызываем, как видишь мы передали туда 8 аргументов, как же оно его прочитало? Всё очень просто, так как функция в JS не просто кусок кода а объект она имеет свои свойства, и у функции есть свойство arguments, оно содержит в себе все значения которые мы передаем в данную функцию, таким образом мы можем передать в функцию неограниченное количество параметров которые все обработаются)

Также если нужно чтобы функция строго принимала то количество значений которое нам нужно, для этого нужно просто в начале функции использовать обычную конструкцию if в которой будет условие которое будет проверять столько ли аргументов в функцию передано сколько нужно, выглядит этот кусочек кода вот так:

 if (arguments.length !=2){
document.write(“

Ошибка, вы передали неверное количество аргументов в функцию!


#3

Видел одну реализацию

function manyArgs() { for (var i = 0; i < arguments.length; i) alert(arguments[i]); }

http://q-answer.ru/questions/neogranichennye-argumenty-v-funkcii-javascript-12837.html


#4

https://itvdn.com/ru/video/javascript-patterns/functions?position=3811 в этом уроке показано как пользоваться методом apply в JS для поиска максимального значения в массиве.

function getMax() {
     return Math.max.apply(null, arguments);
}

Дополнительно рекомендую ознакомиться с тем как работает argumetns в strict mode https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Strict_mode#Упрощение_eval_и_arguments