aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasahiro FUJIMOTO <mfujimot@gmail.com>2022-01-09 13:16:39 +0900
committerMasahiro FUJIMOTO <mfujimot@gmail.com>2022-01-30 10:37:04 +0900
commit7148ce13a352bc49fff86de6e81fb2eaae0797f2 (patch)
treeea6c08e698fb56c1b663615b332aa859f2ad35d7
parent7fe91b7974cad70612224a6d368f87948a40e9e2 (diff)
downloadtranslated-content-7148ce13a352bc49fff86de6e81fb2eaae0797f2.tar.gz
translated-content-7148ce13a352bc49fff86de6e81fb2eaae0797f2.tar.bz2
translated-content-7148ce13a352bc49fff86de6e81fb2eaae0797f2.zip
2021/08/19 時点の英語版に同期
-rw-r--r--files/ja/web/javascript/reference/global_objects/nan/index.md110
1 files changed, 52 insertions, 58 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/nan/index.md b/files/ja/web/javascript/reference/global_objects/nan/index.md
index 8b8d826131..32883442a8 100644
--- a/files/ja/web/javascript/reference/global_objects/nan/index.md
+++ b/files/ja/web/javascript/reference/global_objects/nan/index.md
@@ -3,43 +3,41 @@ title: NaN
slug: Web/JavaScript/Reference/Global_Objects/NaN
tags:
- JavaScript
- - Property
- - Reference
+ - プロパティ
+ - リファレンス
+browser-compat: javascript.builtins.NaN
translation_of: Web/JavaScript/Reference/Global_Objects/NaN
---
-<div>{{jsSidebar("Objects")}}</div>
+{{jsSidebar("Objects")}}
-<p>グローバルプロパティ <code><strong>NaN</strong></code> は<ruby>非数<rp> (</rp><rt>Not-A-Number</rt><rp>) </rp></ruby>を表す値です。</p>
+グローバルプロパティ **`NaN`** は非数 (Not-A-Number) を表す値です。
-<p>{{js_property_attributes(0,0,0)}}</p>
+{{js_property_attributes(0,0,0)}}
-<div>{{EmbedInteractiveExample("pages/js/globalprops-nan.html")}}</div>
+{{EmbedInteractiveExample("pages/js/globalprops-nan.html")}}
-<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+## 解説
-<h2 id="Description" name="Description">解説</h2>
+`NaN` は**グローバルオブジェクト**のプロパティです。言い換えれば、グローバルスコープにある変数です。
-<p><code>NaN</code> は<strong>グローバルオブジェクト</strong>のプロパティです。言い換えれば、グローバルスコープにある変数です。</p>
+`NaN` の初期値は非数であり、 {{jsxref("Number.NaN")}} の値と同等です。最近のブラウザーであれば、 `NaN` は設定、書き込みがともに不可能なプロパティとなっています。そうでない場合であっても、オーバーライドは無効となります。プログラムの中で `NaN` を使用するのは、むしろまれなことです。
-<p><code>NaN</code> の初期値は非数であり、{{jsxref("Number.NaN")}} の値と同等です。最近のブラウザーであれば、 <code>NaN</code> は設定、書き込みがともに不可能なプロパティとなっています。そうでない場合であっても、オーバーライドは無効となります。プログラムの中で <code>NaN</code> を使用するのは、むしろまれなことです。</p>
+`NaN` を返す演算には 5 種類があります。
-<p><code>NaN</code> を返す演算には5種類があります。</p>
+- 数値が解釈できない (例えば `parseInt("blabla")` または `Number(undefined)`)
+- 結果が実数にならない数学演算 (例えば `Math.sqrt(-1)`)
+- オペランドが `NaN` である (例えば `7 ** NaN`)
+- 不確定形 (例えば `0 * Infinity` または `undefined + undefined`)
+- 文字列が関わる加算以外の何らかの演算 (例えば `"foo" / 3`)
-<ul>
- <li>数値が解釈できない (例えば <code>parseInt("blabla")</code> または <code>Number(undefined)</code>)</li>
- <li>結果が実数にならない数学演算 (例えば <code>Math.sqrt(-1)</code>)</li>
- <li>オペランドが <code>NaN</code> (例えば <code>7 ** NaN</code>)</li>
- <li>不確定形 (例えば <code>0 * Infinity</code>)</li>
- <li>文字列が関わる加算以外の何らかの演算 (例えば <code>"foo" / 3</code>)</li>
-</ul>
+## 例
-<h2 id="Examples" name="Examples">例</h2>
+### NaN に対するテスト
-<h3 id="Testing_against_NaN" name="Testing_against_NaN">NaN に対するテスト</h3>
+`NaN` は別の `NaN` 値を含むあらゆる数と (`==`、`!=`、`===`、`!==` によって) 同じではないと比較されます。ある値が `NaN` かどうかを的確に判定するには {{jsxref("Number.isNaN()")}} か {{jsxref("Global_Objects/isNaN", "isNaN()")}} を使用してください。あるいは自己比較を実行しましょう。 `NaN` は、また `NaN` だけが、自身と同等ではないと比較評価されます。
-<p><code>NaN</code> は別の <code>NaN</code> 値を含むあらゆる数と (<code>==</code>、<code>!=</code>、<code>===</code>、<code>!==</code> によって) 同じではないと比較されます。ある値が <code>NaN</code> かどうかを的確に判定するには {{jsxref("Number.isNaN()")}} か {{jsxref("Global_Objects/isNaN", "isNaN()")}} を使用してください。あるいは自己比較を実行しましょう。 <code>NaN</code> は、また <code>NaN</code> だけが、自身と同等ではないと比較評価されます。</p>
-
-<pre class="brush: js notranslate">NaN === NaN; // false
+```js
+NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
@@ -49,45 +47,41 @@ function valueIsNaN(v) { return v !== v; }
valueIsNaN(1); // false
valueIsNaN(NaN); // true
valueIsNaN(Number.NaN); // true
-</pre>
+```
-<p>ただし、 <code>isNaN()</code> と <code>Number.isNaN()</code> には違いがあることに気をつけてください。前者は、値そのものが <code>NaN</code> であったり、値の変換の結果 <code>NaN</code> になる場合に <code>true</code> を返します。後者は値そのものが <code>NaN</code> のときにだけ <code>true</code> を返します。</p>
+ただし、 `isNaN()` と `Number.isNaN()` には違いがあることに気をつけてください。前者は、値そのものが `NaN` であったり、値の変換の結果 `NaN` になる場合に `true` を返します。後者は値そのものが `NaN` のときにだけ `true` を返します。
-<pre class="brush: js notranslate">isNaN('hello world'); // true
+```js
+isNaN('hello world'); // true
Number.isNaN('hello world'); // false
-</pre>
+```
+
+同じ理由で、 `bigint` 値の場合は `isNaN()` ではエラーが発生しますが、 `Number.isNaN()` では発生しません。
+
+```js
+isNaN(1n); // TypeError: Conversion from 'BigInt' to 'number' is not allowed.
+Number.isNaN(1n); // false
+```
-<p>加えて、配列メソッドの中には <code>NaN</code> を見つけることができるもの、できないものがあります。</p>
+加えて、配列メソッドの中には `NaN` を見つけることができるもの、できないものがあります。
-<pre class="brush: js notranslate">let arr = [2, 4, NaN, 12];
+```js
+let arr = [2, 4, NaN, 12];
arr.indexOf(NaN); // -1 (false)
arr.includes(NaN); // true
-arr.findIndex(n =&gt; Number.isNaN(n)); // 2
-</pre>
-
-<h2 id="Specifications" name="Specifications">仕様書</h2>
-
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">仕様書</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-nan', 'NaN')}}</td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
-
-<p>{{Compat("javascript.builtins.NaN")}}</p>
-
-<h2 id="See_also" name="See_also">関連情報</h2>
-
-<ul>
- <li>{{jsxref("Number.NaN")}}</li>
- <li>{{jsxref("Number.isNaN()")}}</li>
- <li>{{jsxref("isNaN", "isNaN()")}}</li>
-</ul>
+arr.findIndex(n => Number.isNaN(n)); // 2
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
+
+## 関連情報
+
+- {{jsxref("Number.NaN")}}
+- {{jsxref("Number.isNaN()")}}
+- {{jsxref("isNaN", "isNaN()")}}