ES6 introduces a bevy of convenient \"syntactic sugar\". Among them are the default parameter capabilities of JavaScript functions, as well as rest parameters. I\'m finding
No, rest parameters cannot have a default initialiser. It is not allowed by the grammar because the initialiser would never be run - the parameter always gets assigned an array value (but possibly an empty one).
What you want to do could be achieved by either
function describePerson(name, ...traits) {
if (traits.length == 0) traits[0] = 'a nondescript individual';
return `Hi, ${name}! You are ${traits.join(', ')}`;
}
or
function describePerson(name, firstTrait = 'a nondescript individual', ...traits) {
traits.unshift(firstTrait);
return `Hi, ${name}! You are ${traits.join(', ')}`;
}
// the same thing with spread syntax:
const describePerson = (name, firstTrait = 'a nondescript individual', ...otherTraits) =>
`Hi, ${name}! You are ${[firstTrait, ...otherTraits].join(', ')}`