title: When (and why) is {} undefined in a JavaScript console?
body: <p>In the console of both FF and Chrome, {} is considered undefined until explicitly evaluated:</p>
  
  <pre><code>{};     // undefined
  ({});   // ▶ Object
  </code></pre>
  
  <p>Actually, it's a bit less defined than undefined -- it's apparently bad syntax:</p>
  
  <pre><code>{} === undefined;  // SyntaxError: Unexpected token ===
  {}.constructor;    // SyntaxError: Unexpected token .
  </code></pre>
  
  <p>But not if it's on the other side, in which case it's fine:</p>
  
  <pre><code>"[object Object]" == {}.toString(); // true
  </code></pre>
  
  <p>Or if it's not the first expression:</p>
  
  <pre><code>undefined + undefined; // NaN
  {} + undefined;        // NaN
  undefined + {};        // "undefined[object Object]"
  </code></pre>
  
  <p>What gives?</p>