В ES6 появились параметры по умолчанию.
Можно написать
function doSomething(a='test', b=1, c=true) {
}
И если не передавать в doSomething() эти переменные примут значения по умолчанию.
Вообще обычно когда появляется необходимость в сабже, то просто делают функцию, которая принимает объект с парами ключ-значение, а недостающие в объекте значение дополняет значениями по умолчанию.
Как-то так:
function doSomething(options) {
var defaultOptions = { validate: false, limit: 5, name: "foo" };
options = $.extend({}, defaultOptions, options || {}); // Дополняем options значениями по умолчанию
}
Но если уж прям не терпится получить все параметры из любой функции, то у любой JS функции есть метод toString(), который возвращает код самой функции в виде строки. Это недокументированная особенность, поддерживаемая всеми браузерами. Для эксперимента можете запустить этот код в консоли чтоб видеть наглядно.
var a = function(a,b,c) {var someCodeInside = true;};
console.log(a.toString());
Можете взять полученную в результате toString() строку и выудить из неё аргументы.
Именно по такому принципу работает Dependency Injection в первом ангуляре.
Вот тут есть примеры кода по вытягиванию параметров из функций
https://stackoverflow.com/questions/1007981/how-to...