Define variables with "{}object", unexpected TypeError
<p>If <code>{}object</code>, e.g. <code>{}"string"</code>, <code>{}[1, 2, 3]</code>, or <code>{}({})</code> is exactly equal (according to <code>===</code>) to <code>object</code>, e.g. <code>"string"</code>, <code>[1, 2, 3]</code>, or <code>({})</code>, why can you define a variable with the latter but not the former?</p>

<p>To clarify:</p>

<pre><code>{}"string" === "string" // true
var a = "string"        // No error
var a = {}"string"      // SyntaxError: Unexpected string
var a = ({}"string")    // SyntaxError: Unexpected string
var a = {}("string")    // TypeError: object is not a function
var a = ({}("string"))  // TypeError: object is not a function
</code></pre>
