.toFixed() called on negative exponential numbers returns a number, not a string
<p>I noticed that when calling <code>toFixed</code> against a negative exponential number, the result is a number, not a string.</p>
<p>First, let's take a look at specs.</p>
<blockquote>
<h2><a href="http://es5.github.io/#x15.7.4.5" rel="noreferrer"><code>Number.prototype.toFixed (fractionDigits)</code></a></h2>
<p>Return a <code>String</code> containing <a href="http://es5.github.io/#this-Number-value" rel="noreferrer">this Number value</a> represented in decimal fixed-point notation with <em>fractionDigits</em> digits after the decimal point. If <em>fractionDigits</em> is <code>undefined</code>, <code>0</code> is assumed.</p>
</blockquote>
<p>What actually happens is (tested in Chrome, Firefox, Node.js):</p>
<pre><code>&gt; -3e5.toFixed()
-300000
</code></pre>
<p>So, the returned value is <code>-3e5</code>. Also, notice this is <strong>not</strong> a string. It is a number:</p>
<pre><code>&gt; x = -3e5.toFixed()
-300000
&gt; typeof x
'number'
</code></pre>
<p>If I wrap the input in parentheses it works as expected:</p>
<pre><code>&gt; x = (-3e5).toFixed()
'-300000'
&gt; typeof x
'string'
</code></pre>
<p>Why is this happening? What is the explanation?</p>