Why does the void operator invoke GetValue(expr) when it always evaluates to undefined?
<p><a href="http://ecma262-5.com/ELS5_Section_11.htm#Section_11.4.2" rel="nofollow">The void operator in JavaScript</a> will call the internal <code>GetValue(expr)</code>, but always return <code>undefined</code>, regardless of what value or expressions are. </p>

<p>The spec says:</p>

<blockquote>
  <p><strong>11.4.2 The void Operator</strong></p>
  
  <p>The production <em>UnaryExpression : void UnaryExpression</em> is evaluated as follows:</p>
  
  <ol>
  <li>Let expr be the result of evaluating <em>UnaryExpression</em>.</li>
  <li>Call <code>GetValue(expr)</code>.</li>
  <li>Return undefined.</li>
  </ol>
  
  <p>GetValue must be called even though its value is not used because it may have observable side-effects.</p>
</blockquote>

<p>My question is, why? What sort of observable side-effects could happen? Can we demonstrate how void might alter program flow, and discuss what would happen if we didn't run <code>GetValue</code>?</p>
