Massinha demais!
Lembrando que também tem a opção em JS (que eu, um pythonista, acho mais legal) de usar "parâmetros nomeados".
Por default JS não tem parâmetros nomeados, mas é possível seguindo a abordagem abaixo:
...No entanto, você pode fazer algo semelhante usando objetos literais e desestruturando. Você pode evitar erros ao chamar a função sem nenhum argumento atribuindo o objeto ao objeto vazio, {}, mesmo se tiver valores padrão configurados... Por exemplo:
function exemplo({ arg1 = 1, arg2 = 2, arg3 = 3 } = {}) {
return { arg1, arg2, arg3 };
}
function problema({falha = true}) {
return falha;
}
problema(); //TypeError: Cannot read property 'falha' of undefined
exemplo({ arg2: 4, arg1: 2 }); // { arg1: 2, arg2: 4, arg3: 3 }
exemplo(); // { arg1: 1, arg2: 2, arg3: 3 }
Referência: https://masteringjs.io/tutorials/fundamentals/parameters