diff options
author | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-01-09 13:16:39 +0900 |
---|---|---|
committer | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-01-30 10:37:04 +0900 |
commit | 7148ce13a352bc49fff86de6e81fb2eaae0797f2 (patch) | |
tree | ea6c08e698fb56c1b663615b332aa859f2ad35d7 | |
parent | 7fe91b7974cad70612224a6d368f87948a40e9e2 (diff) | |
download | translated-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.md | 110 |
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 => 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()")}} |