50 === 50: false. 50 == 50: true?
<p>I'm at a total loss.</p>

<p>I have a function..</p>

<pre><code>Number.prototype.abs = function () {
    return this &gt;= 0 ? this : this * -1;
};
</code></pre>

<p>..that returns the absolute value of a number..</p>

<pre><code>(50).abs(); // 50
(-50).abs(); // 50
</code></pre>

<p>..but that doesn't compare correctly..</p>

<pre><code>(50).abs() === 50; // False
</code></pre>

<p>..sometimes.</p>

<pre><code>(50).abs() == 50; // True
(-50).abs() === 50; // True
</code></pre>

<p>The thing about it, is that it works in Chrome 12, and Firefox 4, but not in IE 9, Safari 5, or Opera 11.</p>

<p>I don't see anything wrong with the code, and since it works in Chrome and Firefox, it's something browser specific but I don't know what.</p>

<p><strong>Update:</strong> The browser specific difference is strict mode support. I run my code in strict mode, which introduces some changes that make my code work. The reason it failed in the browsers it did, is because they have an incomplete or missing strict mode.</p>

<p>Why is it returning false?</p>
