Вы можете использовать именованные параметры (назначение деструктурирования). По сути, ваша функция получает объект, и вы по-прежнему можете устанавливать значения по умолчанию и передавать только те свойства, которые вам нужны. И при таком подходе порядок свойств не имеет значения вообще. Вы можете позвонить sum({ c: 2 })
или sum({ a: 3, c: 4})
.. или как угодно.
Дальнейшее чтение: http://2ality.com/2011/11/keyword-parameters.html
function sum({a=10, b=7, c}){
return a+b+c;
}
document.getElementById("result").innerHTML = sum({ c: 10 });
<div id="result"></div>
Примечание относительно других ответов: IMHO, передавая ложные значения, такие как undefined или null, в качестве аргументов, делает функцию очень непоследовательной и сложной для тестирования. Вот почему я бы использовал именованные параметры, если я знаю, что некоторые поля могут не понадобиться по x причинам.