В JavaScript нет перегрузки методов. Если вам нужно создать методы с одинаковым именем и разным количеством параметров, то вам нужно использовать синтаксис rest parameters:
1 2 3 4 5 6 7 8 9 10 |
function sum(...args) { let result = 0; for (const n of args) { result += n; } return result; } console.log(sum(10,3,-1)); // 12 |
В примере выше args будет массивом с переданными аргументами функции. Вы можете проверять количество элементов в этом массиве, их тип, значения и выполнять разные действия на основе этой информации.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function veryComplexFun(...params) { switch (params.length) { case 0: // statements 1 break; case 1: // statements 2 break; case 2: // statements 3 break; } } |
Функция может объявить только один rest parameter, и он должен быть последним параметром функции. Перед ним можно указать имена других параметров, если они нужны:
1 2 3 4 5 6 7 8 9 10 11 12 |
function nameSum(surname, name, ...golds) { let result = 0; for (const n of golds) { result += n; } result = "name: " + surname + " " + name + ", gold: " + result; return result; } console.log(nameSum("Sidorov", "Vova", 10, 3, 45, 1)); // name: Sidorov Vova, gold: 59 |
В старом коде можно найти использование объекта arguments (именно объект, это не массив, у него нет методов sort, pop и подобных):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function argumentsNameSum() { if (arguments.length < 2) { throw "Incorrect parameters."; } let result = 0; for (let n = 2; n < arguments.length; n++) { result += arguments[n]; } result = "name: " + arguments[0] + " " + arguments[1] + ", gold: " + result; return result; } console.log(argumentsNameSum("Sidorov", "Vova", 10, 3, 45, 1)); // name: Sidorov Vova, gold: 59 |