Destructuring assignment in generator expressions and array comprehensions
<p>Why does <code>for ([] in object);</code> work fine but <code>[void 0 for ([] in object)]</code> or <code>(void 0 for ([] in object))</code> throw a syntax error for invalid left-hand assignment?</p>

<p>For example, I would expect the following code to work, but it doesn't (the assertion isn't even done due to the syntax error):</p>

<pre><code>let (
  i = 0,
  arr = [1, 2, 3, 4],
  iterable = {__iterator__:function() { var i = 5; while (i--) yield i; } }
) {
  for ([] in iterable) i++;
  console.assertEquals([void 0 for ([] in iterable)].length, i);
}
</code></pre>
