语法高亮,滚动条美化,设置页面调整

This commit is contained in:
fofolee
2019-04-19 02:41:09 +08:00
parent 1e8f76c000
commit 359d29ee0b
1590 changed files with 12328 additions and 11441 deletions

View File

@@ -2,7 +2,7 @@
<div></div>
<p><code><strong>isNaN()</strong></code> 函数用来确定一个值是否为<a href="Reference/Global_Objects/NaN" title="全局属性 NaN 的值表示不是一个数字Not-A-Number。"><code>NaN</code></a> 。注:<code>isNaN</code>函数内包含一些非常有趣的<a href="#Description">规则</a>你也可以通过ECMAScript 2015/ES6 中定义的<a href="Reference/Global_Objects/Number/isNaN" title="Number.isNaN() 方法确定传递的值是否为 NaN和其类型是 Number。它是原始的全局isNaN()的更强大的版本。"><code>Number.isNaN()</code></a>或者 可以使用<code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/typeof">typeof</a></code> 来判断该值是否为一个非数字。</p>
<h2 id="Syntax" name="Syntax">语法</h2>
<pre class="syntaxbox"><code>isNaN(<em>testValue</em>)</code></pre>
<pre><code class="language-javascript"><code>isNaN(<em>testValue</em>)</code></code></pre>
<h3 id="Parameters" name="Parameters">参数</h3>
<dl>
<dt><code>testValue</code></dt>
@@ -20,12 +20,12 @@
<p>如果<code>isNaN</code>函数的参数不是<code>Number</code>类型, <code>isNaN</code>函数会首先尝试将这个参数转换为数值,然后才会对转换后的结果是否是<a href="Reference/Global_Objects/NaN" title="全局属性 NaN 的值表示不是一个数字Not-A-Number。"><code>NaN</code></a>进行判断。因此对于能被强制转换为有效的非NaN数值来说空字符串和布尔值分别会被强制转换为数值0和1返回<code>false</code>值也许会让人感觉莫名其妙。比如说空字符串就明显“不是数值not a number”。这种怪异行为起源于"不是数值not a number"在基于IEEE-754数值的浮点计算体制中代表了一种特定的含义。<code>isNaN</code>函数其实等同于回答了这样一个问题被测试的值在被强制转换成数值时会不会返回IEEE-754中所谓的“不是数值not a number”。</p>
<p>下一个版本的ECMAScript (ES2015)包含<a href="Reference/Global_Objects/Number/isNaN" title="Number.isNaN() 方法确定传递的值是否为 NaN和其类型是 Number。它是原始的全局isNaN()的更强大的版本。"><code>Number.isNaN()</code></a>函数。通过<code>Number.isNaN(x)</code>来检测<code>变量x</code>是否是一个<code>NaN</code><font face="'Open Sans', sans-serif">将会是一种可靠的做法</font>。然而,在缺少<code>Number.isNaN</code>函数的情况下, 通过表达式<code>(x != x)</code> 来检测<code>变量x</code>是否是<code>NaN</code>会更加可靠。</p>
<p>一个<code>isNaN</code>的 polyfill 可以理解为这个polyfill利用了<code>NaN</code>自身永不相等于自身这一特征 </p>
<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">var</span> isNaN <span class="operator token">=</span> <span class="keyword token">function</span><span class="punctuation token">(</span>value<span class="punctuation token">)</span> <span class="punctuation token">{</span>
<pre><code class="language-javascript"><code class="language-js"><span class="keyword token">var</span> isNaN <span class="operator token">=</span> <span class="keyword token">function</span><span class="punctuation token">(</span>value<span class="punctuation token">)</span> <span class="punctuation token">{</span>
<span class="keyword token">var</span> n <span class="operator token">=</span> <span class="function token">Number</span><span class="punctuation token">(</span>value<span class="punctuation token">)</span><span class="punctuation token">;</span>
<span class="keyword token">return</span> n <span class="operator token">!==</span> n<span class="punctuation token">;</span>
<span class="punctuation token">}</span><span class="punctuation token">;</span></code></pre>
<span class="punctuation token">}</span><span class="punctuation token">;</span></code></code></pre>
<h2 id="Examples" name="Examples">示例</h2>
<pre class="brush: js">isNaN(NaN); // true
<pre><code class="language-javascript">isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true
@@ -47,12 +47,12 @@ isNaN(new Date().toString()); // true
isNaN("blabla") // true: "blabla"不能转换成数值
// 转换成数值失败, 返回NaN
</pre>
</code></pre>
<h3 id="有用的特殊行为">有用的特殊行为</h3>
<p>有许多方式来看待isNaN()如果isNaN(x)返回false那么x在任何算数表达式中都不会使表达式等于NaN如果返回truex会使所有算数表达式返回NaN。这就意味着在JavaScript中isNaN(x)==true等价于x-0=NaN(在JavaScript中 x-0 == NaN 总是返回false所以你不用去测试它)。实际上, <code>isNaN(x)</code>, <code>isNaN(x - 0)</code>,<code>isNaN(Number(x))</code>, <code>Number.isNaN(x - 0)</code>,和<code>Number.isNaN(Number(x))</code> 的返回值都是一样的 并且在JavaScript中isNaN(x)是这些表达式中最短的表达。</p>
<p>举个例子可以利用这个特殊行为来检测函数的参数是可运算的可以像number一样进行加减乘除等运算。如果不可运算则可赋予这个参数一个默认的值或其他合适的内容。这样就可以得到一个隐式转换参数值的函数而这得益于Javascript的全功能性。</p>
<h2 id="例子">例子</h2>
<pre class="brush: js">function increment(x) {
<pre><code class="language-javascript">function increment(x) {
if (isNaN(x)) x = 0;
return x + 1;
};
@@ -109,7 +109,7 @@ increment(); // 1
isNaN(x) == isNaN(Number(x)) // true for every value of x, including x == undefined,
// because isNaN(undefined) == true and Number(undefined) returns NaN,
// but ...
isNaN() == isNaN(Number()) // false, because isNaN() == true and Number() == 0</pre>
isNaN() == isNaN(Number()) // false, because isNaN() == true and Number() == 0</code></pre>
<h2 id="规范">规范</h2>
<table class="standard-table">
<tbody>