ECMA-262 === algorithm explanation
<p>I was trying to understand the exact algorithm for the === operator in JavaScript. It is defined as something like</p>

<blockquote>
  <p>The comparison x === y, where x and y are values, produces true or false. Such a comparison is performed as follows:</p>
  
  <ol>
  <li>If Type(x) is different from Type(y), return false.</li>
  <li><em>If Type(x) is Undefined, return true.</em></li>
  <li><em>If Type(x) is Null, return true.</em></li>
  <li>If Type(x) is Number, then
  <ul>
  <li>If x is NaN, return false.</li>
  <li>If y is NaN, return false.</li>
  <li>If x is the same Number value as y, return true.</li>
  <li>If x is +0 and y is −0, return true.</li>
  <li>If x is −0 and y is +0, return true.</li>
  <li>Return false.</li>
  </ul></li>
  <li>If Type(x) is String, then return true if x and y are exactly the same sequence of characters (same length and same characters in corresponding positions); otherwise, return false.</li>
  <li>If Type(x) is Boolean, return true if x and y are both true or both false; otherwise, return false.</li>
  <li>Return true if x and y refer to the same object. Otherwise, return false.</li>
  </ol>
</blockquote>

<p>Now if I write something like</p>

<pre><code>var t1 = undefined,t2 = 2;
typeof(t1); //"undefined"
typeof(t2); //"number"

t1 === t2; //returns false ?????
</code></pre>

<p>Consider point 2 and 3: It should return true instead.
I am testing it in Chrome 15.0.874.106 m. Can somebody explain what exactly is going on in this case?</p>
