title: How does js destruct default values for function?
body: <p>I have this code:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>function houseDescriptor([houseColor = 'green', shutterColors = ['red']] = []) {
      console.log(houseColor, shutterColors);
  }
  
  houseDescriptor('nbh');</code></pre>
  </div>
  </div>
  </p>
  
  <p>Why console prints: n b</p>
  
  <p>How its work?</p>
  
  <p>Why if I pass string I don't have errors, but if I use houseDescriptor(123), I got an error?</p>