title: Is Object Destructuring in function parameters a good pattern?
body: <p>I've really fallen in love with object destructuring with functions.</p>
  
  <p>For example:</p>
  
  <pre><code>var buyCoffee = function({sku, pounds = 1, roast:''}){
   ...more code
  }
  buyCoffee({sku:"cf-100" pounds: 3, roast: 'dark'});
  buyCoffee({sku:"cf-101" roast: 'light'});
  </code></pre>
  
  <p><strong>Pros</strong></p>
  
  <ul>
  <li>Flexibility similar to the args object. </li>
  <li>Added Simplicity</li>
  <li>Not required to put in parameters if I don't need them.</li>
  </ul>
  
  <p><strong>Cons</strong></p>
  
  <ul>
  <li>Variable names are locked all the way through.</li>
  <li>Currying would be much harder.(From what I can tell)</li>
  <li>Significant computational overhead vs traditional params ?</li>
  <li>Harder to test?</li>
  </ul>
  
  <p>I'd like to know what downsides there are to this approach? Is this a good pattern to use as I grow as a developer? Just looking for some wisdom from the trenches on this. Thoughts?</p>