diff options
author | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-01-09 14:25:12 +0900 |
---|---|---|
committer | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-01-30 10:37:04 +0900 |
commit | 5a1a2b08dd33b13a0413bcdd38eab753b8c44104 (patch) | |
tree | e5fe3599380e0028733574a959df0599a760d6a4 /files/ja | |
parent | 43a84ecb3f949afc73c83d5dee0a207349120ffe (diff) | |
download | translated-content-5a1a2b08dd33b13a0413bcdd38eab753b8c44104.tar.gz translated-content-5a1a2b08dd33b13a0413bcdd38eab753b8c44104.tar.bz2 translated-content-5a1a2b08dd33b13a0413bcdd38eab753b8c44104.zip |
2021/07/22 時点の英語版に同期
Diffstat (limited to 'files/ja')
-rw-r--r-- | files/ja/web/javascript/reference/global_objects/undefined/index.md | 142 |
1 files changed, 66 insertions, 76 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/undefined/index.md b/files/ja/web/javascript/reference/global_objects/undefined/index.md index d4f0e54903..57d3759933 100644 --- a/files/ja/web/javascript/reference/global_objects/undefined/index.md +++ b/files/ja/web/javascript/reference/global_objects/undefined/index.md @@ -3,85 +3,85 @@ title: undefined slug: Web/JavaScript/Reference/Global_Objects/undefined tags: - JavaScript - - Language feature - - Reference - 言語機能 + - リファレンス +browser-compat: javascript.builtins.undefined translation_of: Web/JavaScript/Reference/Global_Objects/undefined --- -<div>{{jsSidebar("Objects")}}</div> +{{jsSidebar("Objects")}} -<p>グローバルの <code><strong>undefined</strong></code> プロパティはプリミティブ値 <code>{{Glossary("Undefined", "undefined")}}</code> を表します。これは JavaScript における{{Glossary("Primitive", "プリミティブ型")}}の一つです。</p> +グローバルの **`undefined`** プロパティはプリミティブ値の `{{Glossary("Undefined", "undefined")}}` を表します。これは JavaScript における{{Glossary("Primitive", "プリミティブ型")}}の一つです。 -<p>{{js_property_attributes(0,0,0)}}</p> +{{js_property_attributes(0,0,0)}} -<div>{{EmbedInteractiveExample("pages/js/globalprops-undefined.html")}}</div> +{{EmbedInteractiveExample("pages/js/globalprops-undefined.html")}} -<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div> +## 構文 -<h2 id="Syntax" name="Syntax">構文</h2> +```js +undefined +``` -<pre class="syntaxbox notranslate">undefined</pre> +## 解説 -<h2 id="Description" name="Description">解説</h2> +`undefined` は、*グローバルオブジェクト*のプロパティです。すなわちグローバルスコープ内の変数です。 `undefined` の初期値はプリミティブ値である `{{Glossary("Undefined", "undefined")}}` です。 -<p><code>undefined</code> は、<em>グローバルオブジェクト</em>のプロパティです。すなわちグローバルスコープ内の変数です。 <code>undefined</code> の初期値はプリミティブ値である <code>{{Glossary("Undefined", "undefined")}}</code> です。</p> +最近のブラウザー (JavaScript 1.8.5 / Firefox 4 以降) での `undefined` は、 ECMAScript 5 仕様により、設定不可、書込不可のプロパティとなります。 (そうでない場合でも、上書きは避けてください。) -<p>最近のブラウザー (JavaScript 1.8.5 / Firefox 4 以降) での <code>undefined</code> は、 ECMAScript 5 仕様により、設定不可、書込不可のプロパティとなります。 (そうでない場合でも、上書きは避けてください。)</p> +まだ値が代入されていない変数は `undefined` 型となります。評価しようとしている変数に値が代入されていない場合、メソッドや文も `undefined` を返します。値を {{jsxref("Statements/return", "return")}} しない関数も `undefined` を返します。 -<p>まだ値が代入されていない変数は <code>undefined</code> 型となります。評価しようとしている変数に値が代入されていない場合、メソッドや文も <code>undefined</code> を返します。値を {{jsxref("Statements/return", "return")}} しない関数も <code>undefined</code> を返します。</p> +> **Note:** グローバルスコープ以外のスコープでは `undefined` を{{Glossary("identifier", "識別子")}} (変数名) として使うことができますが (`undefined` は{{jsxref("Lexical_grammar", "予約語", "", 1)}}でないため)、コードの管理やデバッグが困難になるためおすすめできません。 +> +> ```js example-bad +> //こんなことはしないこと! +> +> // "foo string" をログ出力する +> (function() { +> var undefined = 'foo'; +> console.log(undefined, typeof undefined); +> })(); +> +> // "foo string" をログ出力する +> (function(undefined) { +> console.log(undefined, typeof undefined); +> })('foo'); +> ``` -<div class="note"> -<p><strong>ご注意ください</strong> グローバルスコープ以外のスコープでは{{Glossary("Identifier", "識別子")}} (変数名) として使うことができますが (<code>undefined</code> は{{jsxref("Reserved_Words", "予約語", "", 1)}}でないため)、コードの管理やデバッグが困難になるためおすすめできません。</p> +## 例 -<pre class="brush: js example-bad notranslate">//こんなことはしないこと! +### 厳密等価と undefined -// "foo string" をログ出力する -(function() { - var undefined = 'foo'; - console.log(undefined, typeof undefined); -})(); +`undefined` と厳密等価・非等価演算子を使って、変数に値があるか調べることができます。次のコードでは、変数 `x` が定義されていないため、 `if` 文は true に評価されます。 -// "foo string" をログ出力する -(function(undefined) { - console.log(undefined, typeof undefined); -})('foo'); -</pre> -</div> - -<h2 id="Examples" name="Examples">例</h2> - -<h3 id="Strict_equality_and_undefined" name="Strict_equality_and_undefined">厳密等価と undefined</h3> - -<p><code>undefined</code> と厳密等価・非等価演算子を使って、変数に値があるか調べることができます。次のコードでは、変数 <code>x</code> が定義されていないため、 <code>if</code> 文は true に評価されます。</p> - -<pre class="brush: js notranslate">var x; +```js +var x; if (x === undefined) { // ここの文は実行される } else { // ここの文は実行されない } -</pre> - -<div class="note"> -<p><strong>注:</strong> ここでは、標準の等価演算子ではなく厳密等価演算子を使わないといけません。厳密等価演算子とは違い、 <code>x == undefined</code> は、 <code>x</code> が <code>null</code> であるかどうかもチェックするからです。 <code>null</code> は <code>undefined</code> と等しくありません。</p> +``` -<p>詳しくは、{{jsxref("Operators/Comparison_Operators", "比較演算子","","true")}}を参照してください。</p> -</div> +> **Note:** ここでは、標準の等価演算子ではなく厳密等価演算子を使わないといけません。厳密等価演算子とは違い、 `x == undefined` は、 `x` が `null` であるかどうかもチェックするからです。 `null` は `undefined` と等しくありません。 +> +> 詳しくは、{{jsxref("Operators", "比較演算子","","true")}}を参照してください。 -<h3 id="typeof_operator_and_undefined" name="typeof_operator_and_undefined">typeof 演算子と undefined</h3> +### typeof 演算子と undefined -<p>代わりに、 {{jsxref("Operators/typeof", "typeof")}} を使用することができます。</p> +代わりに、 {{jsxref("Operators/typeof", "typeof")}} を使用することができます。 -<pre class="brush: js notranslate">var x; +```js +var x; if (typeof x === 'undefined') { // ここの文は実行される } -</pre> +``` -<p>{{jsxref("Operators/typeof", "typeof")}} を使う理由の一つとして、こちらは変数が宣言されていなくてもエラーにはなりません。</p> +{{jsxref("Operators/typeof", "typeof")}} を使う理由の一つとして、こちらは変数が宣言されていなくてもエラーにはなりません。 -<pre class="brush: js notranslate">// 直前まで x は宣言されていない +```js +// 直前まで x は宣言されていない if (typeof x === 'undefined') { // エラーなしで true と評価される // ここの文は実行される } @@ -89,21 +89,24 @@ if (typeof x === 'undefined') { // エラーなしで true と評価される if (x === undefined) { // ReferenceError が発生 } -</pre> +``` -<p>しかし、もう一つの選択肢があります。JavaScriptは静的にスコープされた言語なので、変数が宣言されているかどうかを知るには、それが含まれるコンテキストで宣言されているかどうかを見ることで読み取ることができます。</p> +しかし、もう一つの選択肢があります。 JavaScript は静的にスコープされた言語なので、変数が宣言されているかどうかを知るには、それが含まれるコンテキストで宣言されているかどうかを見ることで読み取ることができます。 -<p>グローバルスコープは{{jsxref("globalThis", "グローバルオブジェクト", "", 1)}}に結びつけられているので、グローバルコンテキストに変数が存在するかどうかのチェックは、<em>グローバルオブジェクト</em>にプロパティが存在することを、 {{jsxref("Operators/in", "in")}} 演算子を使用してチェックすることで行うことができます。</p> +グローバルスコープは{{jsxref("globalThis", "グローバルオブジェクト", "", 1)}}に結びつけられているので、グローバルコンテキストに変数が存在するかどうかのチェックは、<em>グローバルオブジェクト</em>にプロパティが存在することを、 {{jsxref("Operators/in", "in")}} 演算子を使用してチェックすることで行うことができます。 -<pre class="brush: js notranslate">if ('x' in window) { +```js +if ('x' in window) { // x がグローバルに定義されている場合のみ、ここの文を実行 -}</pre> +} +``` -<h3 id="void_operator_and_undefined" name="void_operator_and_undefined">void 演算子と undefined</h3> +### void 演算子と undefined -<p>3 つ目の方法として、{{jsxref("Operators/void", "void")}} 演算子があります。</p> +3 つ目の方法として、{{jsxref("Operators/void", "void")}} 演算子があります。 -<pre class="brush: js notranslate">var x; +```js +var x; if (x === void 0) { // ここの文は実行される } @@ -112,30 +115,17 @@ if (x === void 0) { if (y === void 0) { // ReferenceError: y is not defined が発生 } -</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-undefined', 'undefined')}}</td> - </tr> - </tbody> -</table> +{{Specifications}} -<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> +## ブラウザーの互換性 -<p>{{Compat("javascript.builtins.undefined")}}</p> +{{Compat}} -<h2 id="See_also" name="See_also">関連情報</h2> +## 関連情報 -<ul> - <li>JavaScript の {{Glossary("Primitive", "プリミティブ型")}}</li> - <li>{{jsxref("null")}}</li> -</ul> +- JavaScript の {{Glossary("Primitive", "プリミティブ型")}} +- {{jsxref("null")}} |