Forbes Lindesay (2013-08-23T13:12:19.000Z)
The `=` operator in the object declaration is defining defaults for the destructuring.  If the object being destructured doesn't have that property, the value on the right hand side of the `=` operator is used.

The `= {}` provides a default object to de-structure, making the entire argument optional.  Without that you would be trying to de-structure `undefined` when you call `postToMailingList()` which would be an error.

If you don't pass an object, `{}` is used because it is the default.  If you pass an empty object then that empty object is used (i.e. still `{}`).

P.S. please just inline your code samples and use something like GitHub flavoured markdown to format your posts (i.e. code blocks begin and end with three back-tick characters)  That way they will be quick and easy to read on http://esdiscuss.org/topic/optional-named-arguments  You can see plenty of examples by clicking on "View Original" (e.g. I re-formatted your last post for you)
forbes at lindesay.co.uk (2013-08-23T13:19:29.768Z)
The `=` operator in the object declaration is defining defaults for the destructuring.  If the object being destructured doesn't have that property, the value on the right hand side of the `=` operator is used.

The `= {}` provides a default object to de-structure, making the entire argument optional.  Without that you would be trying to de-structure `undefined` when you call `postToMailingList()` which would be an error.

If you don't pass an object, `{}` is used because it is the default.  If you pass an empty object then that empty object is used (i.e. still `{}`).