From 9b965a794d8e500fc0414f234f451a0c6b464984 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Fri, 25 Jun 2021 01:17:20 +0900 Subject: Web/JavaScript/Reference/Errors/N* を更新 (#1202) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Web/JavaScript/Reference/Errors/N* を更新 2021/06/14 時点の英語版に同期 * 追加修正 --- .../errors/negative_repetition_count/index.html | 4 +- .../reference/errors/no_non-null_object/index.html | 33 ++--- .../reference/errors/no_properties/index.html | 24 ++-- .../reference/errors/no_variable_name/index.html | 54 ++++----- .../non_configurable_array_element/index.html | 45 ++++--- .../reference/errors/not_a_codepoint/index.html | 6 +- .../reference/errors/not_a_constructor/index.html | 39 +++--- .../reference/errors/not_a_function/index.html | 134 ++++++++++++++------- .../reference/errors/not_defined/index.html | 34 +++--- 9 files changed, 221 insertions(+), 152 deletions(-) diff --git a/files/ja/web/javascript/reference/errors/negative_repetition_count/index.html b/files/ja/web/javascript/reference/errors/negative_repetition_count/index.html index 406914eb76..fceff9bdd9 100644 --- a/files/ja/web/javascript/reference/errors/negative_repetition_count/index.html +++ b/files/ja/web/javascript/reference/errors/negative_repetition_count/index.html @@ -23,7 +23,7 @@ RangeError: Invalid count value (Chrome)

{{jsxref("RangeError")}}

-

原因

+

エラーの原因

{{jsxref("String.prototype.repeat()")}} メソッドを使用しています。 count 引数は、文字列の繰り返し回数を指定します。 これは 0 から正の {{jsxref("Infinity")}} 未満の値である必要があり、負の数は使用できません。 有効値の範囲は [0, +∞) のように説明できます。

@@ -33,7 +33,7 @@ RangeError: Invalid count value (Chrome)
'abc'.repeat(-1); // RangeError 
-

有効なケース

+

有効な場合

'abc'.repeat(0);    // ''
 'abc'.repeat(1);    // 'abc'
diff --git a/files/ja/web/javascript/reference/errors/no_non-null_object/index.html b/files/ja/web/javascript/reference/errors/no_non-null_object/index.html
index d602d95826..93d167e25a 100644
--- a/files/ja/web/javascript/reference/errors/no_non-null_object/index.html
+++ b/files/ja/web/javascript/reference/errors/no_non-null_object/index.html
@@ -2,17 +2,20 @@
 title: 'TypeError: "x" is not a non-null object'
 slug: Web/JavaScript/Reference/Errors/No_non-null_object
 tags:
-  - Error
-  - Errors
-  - JavaScript
-  - TypeError
+- Error
+- Errors
+- JavaScript
+- TypeError
 translation_of: Web/JavaScript/Reference/Errors/No_non-null_object
 ---
 
{{JSSidebar("Errors")}}
-

メッセージ

+

JavaScript の例外 "is not a non-null object" は、オブジェクトが何かを求めているのに提供されなかった場合に発生します。 {{jsxref("null")}} はオブジェクトではなく、動作しません。

-
TypeError: "x" is not a non-null object (Firefox)
+

エラーメッセージ

+ +
TypeError: Invalid descriptor for property {x} (Edge)
+TypeError: "x" is not a non-null object (Firefox)
 TypeError: Property description must be an object: "x" (Chrome)
 TypeError: Invalid value used in weak set (Chrome)
 
@@ -23,13 +26,13 @@ TypeError: Invalid value used in weak set (Chrome)

何がうまくいかなかったのか?

-

どこかでオブジェクトが期待されていますが、提供されませんでした。{{jsxref("null")}} はオブジェクトではなく、動作しません。与えられた状況で適切なオブジェクトを提供しなければなりません。

+

どこかでオブジェクトが期待されていますが、提供されませんでした。 {{jsxref("null")}} はオブジェクトではなく、動作しません。与えられた状況で適切なオブジェクトを提供しなければなりません。

-

プロパティディスクリプタが想定される

+

プロパティディスクリプターが期待される場合

-

{{jsxref("Object.create()")}} メソッドや {{jsxref("Object.defineProperty()")}} メソッド、{{jsxref("Object.defineProperties()")}} メソッドを使用するとき、省略可能なディスクリプタ引数として、プロパティディスクリプタオブジェクトが想定されます。(ただの数値のように) オブジェクトを提供しないと、エラーをスローします:

+

{{jsxref("Object.create()")}} メソッドや {{jsxref("Object.defineProperty()")}} メソッド、{{jsxref("Object.defineProperties()")}} メソッドを使用するとき、省略可能なディスクリプター引数として、プロパティディスクリプターオブジェクトが想定されます。 (ただの数値のように) オブジェクトを提供しないと、エラーが発生します。

Object.defineProperty({}, 'key', 1);
 // TypeError: 1 is not a non-null object
@@ -38,12 +41,12 @@ Object.defineProperty({}, 'key', null);
 // TypeError: null is not a non-null object
 
-

有効なプロパティディスクリプタはこのようになります:

+

有効なプロパティディスクリプターはこのようになります。

Object.defineProperty({}, 'key', { value: 'foo', writable: false });
 
-

WeakMap オブジェクトと WeakSet オブジェクトはオブジェクトキーが必要

+

WeakMap オブジェクトと WeakSet オブジェクトはオブジェクトキーが必要

{{jsxref("WeakMap")}} オブジェクトと {{jsxref("WeakSet")}} オブジェクトはオブジェクトキーを保持します。そのほかの型をキーとして使用できません。

@@ -51,7 +54,7 @@ Object.defineProperty({}, 'key', null); ws.add('foo'); // TypeError: "foo" is not a non-null object
-

代わりにオブジェクトを使用します:

+

代わりにオブジェクトを使用してください。

ws.add({foo: 'bar'});
 ws.add(window);
@@ -60,7 +63,7 @@ ws.add(window);
 

関連項目

    -
  • {{jsxref("Object.create()")}}
  • -
  • {{jsxref("Object.defineProperty()")}}、{{jsxref("Object.defineProperties()")}}
  • -
  • {{jsxref("WeakMap")}}、{{jsxref("WeakSet")}}
  • +
  • {{jsxref("Object.create()")}}
  • +
  • {{jsxref("Object.defineProperty()")}}、{{jsxref("Object.defineProperties()")}}
  • +
  • {{jsxref("WeakMap")}}、{{jsxref("WeakSet")}}
diff --git a/files/ja/web/javascript/reference/errors/no_properties/index.html b/files/ja/web/javascript/reference/errors/no_properties/index.html index d699a0767f..6630aee904 100644 --- a/files/ja/web/javascript/reference/errors/no_properties/index.html +++ b/files/ja/web/javascript/reference/errors/no_properties/index.html @@ -2,22 +2,26 @@ title: 'TypeError: "x" has no properties' slug: Web/JavaScript/Reference/Errors/No_properties tags: - - Errors - - JavaScript - - TypeError +- Error +- Errors +- JavaScript +- TypeError translation_of: Web/JavaScript/Reference/Errors/No_properties ---
{{jsSidebar("Errors")}}
-

メッセージ

+

JavaScript の例外 "null (or undefined) has no properties" は、 {{jsxref("null")}} および {{jsxref("undefined")}} のプロパティにアクセスしようとしたときに発生します。これらには何もありません。They

-
TypeError: null has no properties
-TypeError: undefined has no properties
+

エラーメッセージ

+ +
TypeError: Unable to get property {x} of undefined or null reference (Edge)
+TypeError: null has no properties (Firefox)
+TypeError: undefined has no properties (Firefox)
 

エラータイプ

-

{{jsxref("TypeError")}}。

+

{{jsxref("TypeError")}}

何がうまくいかなかったのか?

@@ -25,6 +29,8 @@ TypeError: undefined has no properties

+

null と undefined にはプロパティがない

+
null.foo;
 // TypeError: null has no properties
 
@@ -35,6 +41,6 @@ undefined.bar;
 

関連項目

    -
  • {{jsxref("null")}}
  • -
  • {{jsxref("undefined")}}
  • +
  • {{jsxref("null")}}
  • +
  • {{jsxref("undefined")}}
diff --git a/files/ja/web/javascript/reference/errors/no_variable_name/index.html b/files/ja/web/javascript/reference/errors/no_variable_name/index.html index f72764f8cd..34cadd49ce 100644 --- a/files/ja/web/javascript/reference/errors/no_variable_name/index.html +++ b/files/ja/web/javascript/reference/errors/no_variable_name/index.html @@ -10,49 +10,47 @@ translation_of: Web/JavaScript/Reference/Errors/No_variable_name ---
{{jsSidebar("Errors")}}
-

JavaScript の例外 "missing variable name" が頻繁に発生するのは、物の名前を付けるのが大変だからです。あるいは、カンマが間違っているかもしれません。タイプミスがないかチェックしましょう

+

JavaScript の例外 "missing variable name" は、開発者がよく経験するエラーです。入力間違いや変数名を忘れた場合によく発生します。

-

メッセージ

+

エラーメッセージ

-
SyntaxError: missing variable name (Firefox)
+
SyntaxError: missing variable name (Firefox)
 SyntaxError: Unexpected token = (Chrome)
-

エラー種別

+

エラーの種類

{{jsxref("SyntaxError")}}

-

エラーの原因

+

エラーの原因

-

変数名に名前がありません。これはコードの構文エラーが原因である可能性があります。おそらく、どこかでカンマが間違っているか、名前を付けるのに苦戦しているかです。分かります。名前を付けるのは難しいです。

+

変数の名前がありません。原因は、タイプミスや変数名の忘れがほとんどです。変数名が = 記号の前に記載されていることを確認してください。

-
    -
  • 前の行や宣言が、セミコロンではなくカンマで終了していないかどうか確認しましょう。
  • -
+

複数の変数を同時に宣言する場合は、前の行/宣言がセミコロンではなくカンマで終わっていないことを確認してください。

-

+

-

変数名を忘れている

+

変数名を忘れている

-
var = "foo";
+
var = "foo";
 
-

良い変数名を考えるのは大変です。みんなそうでした。

+

分かりやすい変数名を考えることは、ほとんどの開発者にとって難しいことです。しかし、時間が経てば簡単になります。

-
var ohGodWhy = "foo";
+
var description = "foo";
-

予約語は変数名にできない

+

予約語は変数名にできない

-

いくつかの変数名は予約語です。使用できません。ごめんなさい:(

+

いくつか予約語である変数名があります。使用できません。ごめんね:(

-
var debugger = "whoop";
+
var debugger = "whoop";
 // SyntaxError: missing variable name
 
-

複数の変数宣言

+

複数の変数宣言

複数の変数を宣言するときは、カンマに特別な注意を払ってください。余分なカンマがありませんか?誤ってセミコロンの代わりにカンマを加えていませんか?

-
var x, y = "foo",
+
var x, y = "foo",
 var x, = "foo"
 
 var first = document.getElementById('one'),
@@ -61,30 +59,30 @@ var second = document.getElementById('two'),
 // SyntaxError: missing variable name
 
-

修正版:

+

修正版は次の通りです。

-
var x, y = "foo";
+
var x, y = "foo";
 var x = "foo";
 
 var first = document.getElementById('one');
 var second = document.getElementById('two');
-

配列

+

配列

JavaScript の {{jsxref("Array")}} リテラルは、値を角括弧で囲む必要があります。これは動作しません。

-
var arr = 1,2,3,4,5;
+
var arr = 1,2,3,4,5;
 // SyntaxError: missing variable name
 
-

正しくは:

+

正しくは次の通りです。

-
var arr = [1,2,3,4,5];
+
var arr = [1,2,3,4,5];
-

関連情報

+

関連情報

diff --git a/files/ja/web/javascript/reference/errors/non_configurable_array_element/index.html b/files/ja/web/javascript/reference/errors/non_configurable_array_element/index.html index c0b577db67..2542f87d24 100644 --- a/files/ja/web/javascript/reference/errors/non_configurable_array_element/index.html +++ b/files/ja/web/javascript/reference/errors/non_configurable_array_element/index.html @@ -1,35 +1,43 @@ --- title: 'TypeError: can''t delete non-configurable array element' slug: Web/JavaScript/Reference/Errors/Non_configurable_array_element +tags: + - Error + - Errors + - JavaScript + - TypeError translation_of: Web/JavaScript/Reference/Errors/Non_configurable_array_element ---
{{jsSidebar("Errors")}}
-

メッセージ

+

JavaScript の例外 "can't delete non-configurable array element" は、配列を短縮しようとしたときに配列の要素の 1 つが設定不可であった場合に発生します。

-
TypeError: can't delete non-configurable array element (Firefox)
+

エラーメッセージ

+ +
TypeError: can't delete non-configurable array element (Firefox)
 TypeError: Cannot delete property '2' of [object Array] (Chrome)
 
-

エラータイプ

+

エラーの種類

{{jsxref("TypeError")}}

-

何がうまくいかなかったのか?

+

エラーの原因

-

配列を短縮しようとしていますが、配列の要素が変更不可です。配列の短縮をするとき、新しい配列の長さを超える要素は削除されますが、このシチュエーションでは失敗します。

+

配列を短縮しようとしていますが、配列の要素が変更不可です。配列の短縮をするとき、新しい配列の長さを超える要素は削除されますが、このシチュエーションでは失敗します。

configurable 属性はプロパティをオブジェクトから削除できるかどうか、および (writable 以外の) 変更できるかどうかを制御します。

-

通常、配列初期化子で生成されたオブジェクトのプロパティは変更可能です。しかし、たとえば {{jsxref("Object.defineProperty()")}} が使用された場合、既定でプロパティを変更できません。

+

通常、配列初期化子で生成されたオブジェクトのプロパティは変更可能です。しかし、たとえば {{jsxref("Object.defineProperty()")}} が使用された場合、既定でプロパティを変更できません。

-

Object.defineProperty で生成した変更不可能なプロパティ

+

Object.defineProperty で生成した変更不可能なプロパティ

プロパティを変更できないように指定する場合、{{jsxref("Object.defineProperty()")}} は既定で変更できないプロパティを生成します。

-
var arr = [];
+
"use strict";
+var arr = [];
 Object.defineProperty(arr, 0, {value: 0});
 Object.defineProperty(arr, 1, {value: "1"});
 
@@ -39,27 +47,30 @@ arr.length = 1;
 
 

配列を短縮したい場合、要素を変更可能に設定する必要があります。

-
var arr = [];
+
"use strict";
+var arr = [];
 Object.defineProperty(arr, 0, {value: 0, configurable: true});
 Object.defineProperty(arr, 1, {value: "1", configurable: true});
 
 arr.length = 1;
 
-

シールされた配列

+

封印された配列

{{jsxref("Object.seal()")}} 関数はすべての存在する要素を設定不可にします。

-
var arr = [1,2,3];
+
"use strict";
+var arr = [1,2,3];
 Object.seal(arr);
 
 arr.length = 1;
 // TypeError: can't delete non-configurable array element
 
-

{{jsxref("Object.seal()")}} の呼び出しを削除するか、配列のコピーを取る必要があります。コピーの場合、コピーした配列の短縮は元の配列の長さに影響しません。/p>

+

{{jsxref("Object.seal()")}} の呼び出しを削除するか、配列のコピーを取る必要があります。コピーの場合、コピーした配列の短縮は元の配列の長さに影響しません。

-
var arr = [1,2,3];
+
"use strict";
+var arr = [1,2,3];
 Object.seal(arr);
 
 // Copy the initial array to shorten the copy
@@ -71,8 +82,8 @@ copy.length = 1;
 

関連項目

    -
  • [[Configurable]]
  • -
  • {{jsxref("Array.length")}}
  • -
  • {{jsxref("Object.defineProperty()")}}
  • -
  • {{jsxref("Object.seal()")}}
  • +
  • [[Configurable]]
  • +
  • {{jsxref("Array.length")}}
  • +
  • {{jsxref("Object.defineProperty()")}}
  • +
  • {{jsxref("Object.seal()")}}
diff --git a/files/ja/web/javascript/reference/errors/not_a_codepoint/index.html b/files/ja/web/javascript/reference/errors/not_a_codepoint/index.html index 8bc1d11a3f..489619f6ea 100644 --- a/files/ja/web/javascript/reference/errors/not_a_codepoint/index.html +++ b/files/ja/web/javascript/reference/errors/not_a_codepoint/index.html @@ -18,11 +18,11 @@ translation_of: Web/JavaScript/Reference/Errors/Not_a_codepoint RangeError: Invalid code point {0} (Chromium)
-

エラー種別

+

エラーの種類

{{jsxref("RangeError")}}

-

原因

+

エラーの原因

{{jsxref("String.fromCodePoint()")}} は、 {{jsxref("NaN")}} 値、負の整数 (-1)、 整数以外 (5.4)、 0x10FFFF より大きい数 (1114111) が渡されるとこのエラーを発生します。

@@ -39,7 +39,7 @@ String.fromCodePoint(3.14); // RangeError String.fromCodePoint(3e-2); // RangeError String.fromCodePoint(NaN); // RangeError
-

有効なケース

+

有効な場合

String.fromCodePoint(42);       // "*"
 String.fromCodePoint(65, 90);   // "AZ"
diff --git a/files/ja/web/javascript/reference/errors/not_a_constructor/index.html b/files/ja/web/javascript/reference/errors/not_a_constructor/index.html
index 68b226a54f..b916bafd40 100644
--- a/files/ja/web/javascript/reference/errors/not_a_constructor/index.html
+++ b/files/ja/web/javascript/reference/errors/not_a_constructor/index.html
@@ -2,6 +2,7 @@
 title: 'TypeError: "x" is not a constructor'
 slug: Web/JavaScript/Reference/Errors/Not_a_constructor
 tags:
+  - Error
   - Errors
   - JavaScript
   - TypeError
@@ -9,34 +10,36 @@ translation_of: Web/JavaScript/Reference/Errors/Not_a_constructor
 ---
 
{{jsSidebar("Errors")}}
-

メッセージ

+

JavaScript の例外 "is not a constructor" は、オブジェクトや変数をコンストラクターとして使用しようとしたものの、そのオブジェクトや変数がコンストラクターではなかった場合に発生します。

-
TypeError: "x" is not a constructor
+

エラーメッセージ

+ +
TypeError: Object doesn't support this action (Edge)
+TypeError: "x" is not a constructor
 
 TypeError: Math is not a constructor
 TypeError: JSON is not a constructor
 TypeError: Symbol is not a constructor
 TypeError: Reflect is not a constructor
 TypeError: Intl is not a constructor
-TypeError: SIMD is not a constructor
 TypeError: Atomics is not a constructor
 
-

エラータイプ

+

エラーの種類

{{jsxref("TypeError")}}

-

何がうまくいかなかったのか?

+

エラーの原因

-

オブジェクト、または変数をコンストラクターとして使おうとしていますが、それらがコンストラクターではありません。コンストラクターとは何かについては、{{Glossary("constructor","コンストラクター")}} か new 演算子を見てください。

+

オブジェクト、または変数をコンストラクターとして使おうとしていますが、それらがコンストラクターではありません。コンストラクターとは何かについては、コンストラクターまたは new 演算子を参照してください。

-

{{jsxref("String")}} や {{jsxref("Array")}} のような、new を使用して生成できる数多くのグローバルオブジェクトがあります。しかし、いくつかのグローバルオブジェクトはそうではなく、 それらのプロパティやメソッドは静的です。次の JavaScript 標準ビルトインオブジェクトは、コンストラクターではありません: {{jsxref("Math")}} と {{jsxref("JSON")}}、{{jsxref("Symbol")}}、{{jsxref("Reflect")}}、{{jsxref("Intl")}}、{{jsxref("SIMD")}}、{{jsxref("Atomics")}}。

+

{{jsxref("String")}} や {{jsxref("Array")}} のような、new を使用して生成できる数多くのグローバルオブジェクトがあります。しかし、いくつかのグローバルオブジェクトはそうではなく、 それらのプロパティやメソッドは静的です。次の JavaScript 標準組み込みオブジェクトのうち、 {{jsxref("Math")}}、{{jsxref("JSON")}}、{{jsxref("Symbol")}}、{{jsxref("Reflect")}}、{{jsxref("Intl")}}、{{jsxref("Atomics")}} はコンストラクターではありません:。

function* も、コンストラクターとして使用することはできません。

-

+

-

無効なケース

+

無効な場合

var Car = 1;
 new Car();
@@ -53,9 +56,9 @@ var obj = new f;
 // TypeError: f is not a constructor
 
-

car コンストラクター

+

car コンストラクター

-

車のためのオブジェクト型を生成するとします。このオブジェクトの型が car と呼ばれ、make と model、year プロパティを持つとします。これを行うには、次の関数を定義します:

+

自動車のためのオブジェクト型を作成するとします。このオブジェクト型を Car と呼び、 make, model, year の各プロパティを持つようにしたいとします。これを実現するには、次のような関数を定義します。

function Car(make, model, year) {
   this.make = make;
@@ -64,20 +67,20 @@ var obj = new f;
 }
 
-

次のように mycar と呼ばれるオブジェクトを生成できます:

+

次のようにして mycar というオブジェクトを生成できるようになりました。

var mycar = new Car('Eagle', 'Talon TSi', 1993);
-

In Promises

+

プロミスの場合

-

When returning an immediately-resolved or immediately-rejected Promise, you do not need to create a new Promise(...) and act on it.

+

直ちに解決するか拒否されるプロミスを返す場合は、 new Promise(...) を生成して操作する必要はありません。

-

This is not legal (the Promise constructor is not being called correctly) and will throw a TypeError: this is not a constructor exception:

+

これは正しくなく (Promise コンストラクターが正しく呼び出されません)、 TypeError: this is not a constructor 例外が発生します。

return new Promise.resolve(true);
 
-

Instead, use the Promise.resolve() or Promise.reject() static methods:

+

Instead, use the Promise.resolve() or Promise.reject() static methods:

// This is legal, but unnecessarily long:
 return new Promise((resolve, reject) => { resolve(true); })
@@ -87,9 +90,9 @@ return Promise.resolve(true);
 return Promise.reject(false);
 
-

関連項目

+

関連情報

diff --git a/files/ja/web/javascript/reference/errors/not_a_function/index.html b/files/ja/web/javascript/reference/errors/not_a_function/index.html index 9b679e9bd2..06b63db14d 100644 --- a/files/ja/web/javascript/reference/errors/not_a_function/index.html +++ b/files/ja/web/javascript/reference/errors/not_a_function/index.html @@ -2,63 +2,67 @@ title: 'TypeError: "x" is not a function' slug: Web/JavaScript/Reference/Errors/Not_a_function tags: - - Errors - - JavaScript - - TypeError +- Error +- Errors +- JavaScript +- TypeError translation_of: Web/JavaScript/Reference/Errors/Not_a_function ---
{{jsSidebar("Errors")}}
-

エラーメッセージ

+

JavaScript の例外 "is not a function" は、値を関数として呼び出そうとしたが、その値が実際には関数ではなかった場合に発生します。

-
TypeError: "x" is not a function
+

エラーメッセージ

+ +
TypeError: Object doesn't support property or method {x} (Edge)
+TypeError: "x" is not a function
 
-

エラーの種類

+

エラーの種類

-

{{jsxref("TypeError")}}.

+

{{jsxref("TypeError")}}

-

エラーの原因

+

エラーの原因

関数でないものを、関数呼び出ししようとした際に発生するエラーです。また適切な関数が定義されていることを期待されているが、定義されていない場合も発生します。

関数名のタイプミスをしていないか確認してみましょう。また、呼び出そうとしてるオブジェクトがそのメソッドを持っているかどうかも確認してみてください。配列オブジェクトが持っている map 関数を、それを持たない通常のオブジェクトに対して呼び出そうとしている場合が、後者の例になります。

-

多くの組み込み関数はコールバック関数を必要とします。これらのメソッドを正しく呼び出すためには、関数を引数に指定する必要があります:

+

多くの組み込み関数はコールバック関数を必要とします。これらのメソッドを正しく呼び出すためには、関数を引数に指定する必要があります。

    -
  • {{jsxref("Array")}} もしくは {{jsxref("TypedArray")}} オブジェクトを操作する場合: -
      -
    • {{jsxref("Array.prototype.every()")}}, {{jsxref("Array.prototype.some()")}}, {{jsxref("Array.prototype.forEach()")}}, {{jsxref("Array.prototype.map()")}}, {{jsxref("Array.prototype.filter()")}},  {{jsxref("Array.prototype.reduce()")}}, {{jsxref("Array.prototype.reduceRight()")}}, {{jsxref("Array.prototype.find()")}}
    • -
    -
  • -
  •  {{jsxref("Map")}} もしくは {{jsxref("Set")}} を操作する場合: -
      -
    • {{jsxref("Map.prototype.forEach()")}}, {{jsxref("Set.prototype.forEach()")}}
    • -
    -
  • +
  • {{jsxref("Array")}} もしくは {{jsxref("TypedArray")}} オブジェクトを操作する場合: +
      +
    • {{jsxref("Array.prototype.every()")}}, {{jsxref("Array.prototype.some()")}}, {{jsxref("Array.prototype.forEach()")}}, {{jsxref("Array.prototype.map()")}}, {{jsxref("Array.prototype.filter()")}},  {{jsxref("Array.prototype.reduce()")}}, {{jsxref("Array.prototype.reduceRight()")}}, {{jsxref("Array.prototype.find()")}}
    • +
    +
  • +
  •  {{jsxref("Map")}} もしくは {{jsxref("Set")}} を操作する場合: +
      +
    • {{jsxref("Map.prototype.forEach()")}}, {{jsxref("Set.prototype.forEach()")}}
    • +
    +
-

このエラーを起こすコードの例

+

-

関数名のタイプミス

+

関数名のタイプミス

-

次のように関数名を間違っている場合に発生します。なおこのミスは非常に多く発生します:

+

次のように関数名を間違えている場合に発生します。なおこのミスは非常に多く発生します。

-
var x = document.getElementByID("foo");
+
let x = document.getElementByID('foo');
 // TypeError: document.getElementByID is not a function
 
-

正しい関数名は getElementById です:

+

正しい関数名は getElementById です。

-
var x = document.getElementById("foo");
+
let x = document.getElementById('foo');
 
-

間違ったオブジェクトに対する関数呼び出し

+

間違ったオブジェクトに対する関数呼び出し

いくつかのメソッドは、引数に関数が指定されていることを期待していて、しかも特定のオブジェクトの上でのみ正しく動作するものがあります。この典型例が {{jsxref("Array.prototype.map()")}} で、これは {{jsxref("Array")}} オブジェクトでのみ正しく動作します。

-
var obj = { a: 13, b: 37, c: 42 };
+
let obj = {a: 13, b: 37, c: 42};
 
 obj.map(function(num) {
   return num * 2;
@@ -66,25 +70,25 @@ obj.map(function(num) {
 
 // TypeError: obj.map is not a function
-

オブジェクトではなく、配列を利用しましょう:

+

オブジェクトではなく、配列を利用しましょう。

-
var numbers = [1, 4, 9];
+
let numbers = [1, 4, 9];
 
 numbers.map(function(num) {
   return num * 2;
 });
 
-// Array [ 2, 8, 18 ]
+// Array [2, 8, 18]
 
-

すでに存在するプロパティと名前を共有する関数

+

すでに存在するプロパティと名前を共有する関数

-

クラスを作るとき、時々プロパティと関数が同じ名前であることがあります。関数を呼び出すと、コンパイラーは関数が存在するのをやめたように考えます。

+

クラスを作るとき、プロパティと関数が同じ名前になることがあります。関数を呼び出すと、コンパイラーは関数が存在するのをやめたように考えます。

-
var Dog = function () {
+
var Dog = function () {
  this.age = 11;
  this.color = "black";
- this.name = "Ralph";
+ this.name = "Ralph";
  return this;
 }
 
@@ -93,16 +97,16 @@ Dog.prototype.name = function(name) {
  return this;
 }
 
-
 var myNewDog = new Dog();
-myNewDog.name("Cassidy"); //Uncaught TypeError: myNewDog.name is not a function
+myNewDog.name("Cassidy"); //Uncaught TypeError: myNewDog.name is not a function +
-

代わりに異なるプロパティ名を使ってください:

+

代わりに異なるプロパティ名を使ってください。

-
var Dog = function () {
+
var Dog = function () {
  this.age = 11;
  this.color = "black";
- this.dogName = "Ralph"; //Using this.dogName instead of .name
+ this.dogName = "Ralph"; //Using this.dogName instead of .name
  return this;
 }
 
@@ -111,12 +115,56 @@ Dog.prototype.name = function(name) {
  return this;
 }
 
-
 var myNewDog = new Dog();
-myNewDog.name("Cassidy"); //Dog { age: 11, color: 'black', dogName: 'Cassidy' }
+myNewDog.name("Cassidy"); //Dog { age: 11, color: 'black', dogName: 'Cassidy' } +
+ +

乗算での括弧の使用

+ +

数学では、 2 × (3 + 5) を 2*(3 + 5) または単に 2(3 + 5) と書くことができます。

+ +

後者を使用するとエラーが発生します。

+ +
const sixteen = 2(3 + 5);
+alert('2 x (3 + 5) is ' + String(sixteen));
+//Uncaught TypeError: 2 is not a function
+ +

このコードは * 演算子を追加すると修正できます。

+ +
const sixteen = 2 * (3 + 5);
+alert('2 x (3 + 5) is ' + String(sixteen));
+//2 x (3 + 5) is 16
+
+ +

正しくエクスポートされたモジュールをインポートする

+ +

正しくモジュールをインポートしていることを確認してください。

+ +

helpers ライブラリーの例 (helpers.js)

+ +
let helpers = function () { };
+
+helpers.groupBy = function (objectArray, property) {
+  return objectArray.reduce(function (acc, obj) {
+    var key = obj[property];
+    if (!acc[key]) {
+      acc[key] = [];
+    }
+    acc[key].push(obj);
+    return acc;
+  },
+{});
+}
+
+export default helpers;
+
+ +

正しい import の使い方 (App.js):

+ +
import helpers from './helpers'
-

関連情報

+

関連情報

diff --git a/files/ja/web/javascript/reference/errors/not_defined/index.html b/files/ja/web/javascript/reference/errors/not_defined/index.html index 3dc0feddee..0f32c3b1a2 100644 --- a/files/ja/web/javascript/reference/errors/not_defined/index.html +++ b/files/ja/web/javascript/reference/errors/not_defined/index.html @@ -11,40 +11,40 @@ translation_of: Web/JavaScript/Reference/Errors/Not_defined

JavaScript の例外 "variable is not defined" は、どこかで参照している変数が存在しない場合に発生します。

-

メッセージ

+

エラーメッセージ

-
ReferenceError: "x" is not defined
+
ReferenceError: "x" is not defined
 
-

エラー種別

+

エラーの種類

{{jsxref("ReferenceError")}}.

-

原因

+

エラーの原因

-

どこかで存在しない変数を参照しています。この変数を宣言しておくか、現在のスクリプトまたはスコープで利用可能であることを確認する必要があります。

+

どこかで存在しない変数を参照しています。この変数を宣言しておくか、現在のスクリプトまたはスコープで利用可能であることを確認する必要があります。

-

メモ: ライブラリ (jQuery など) を読み込むとき、ライブラリの変数、例えば "$" にアクセスする前に読み込みが行われるかを確認してください。ライブラリを読み込む {{HTMLElement("script")}} 要素は、それを使用するコードよりも前に置いてください。

+

注: ライブラリ (jQuery など) を読み込むとき、ライブラリの変数、例えば "$" にアクセスする前に読み込みが行われるかを確認してください。ライブラリを読み込む {{HTMLElement("script")}} 要素は、それを使用するコードよりも前に置いてください。

-

+

-

宣言されていない変数

+

宣言されていない変数

-
foo.substring(1); // ReferenceError: foo is not defined
+
foo.substring(1); // ReferenceError: foo is not defined
 

"foo" と言う変数はどこにも宣言されていません。これは文字列である必要があり、それならば {{jsxref("String.prototype.substring()")}} メソッドが動作します。

-
var foo = 'bar';
+
var foo = 'bar';
 foo.substring(1); // "ar"
-

スコープの間違い

+

スコープの間違い

変数は現在の実行コンテキストで利用可能である必要があります。関数の中で定義された変数は、その関数のスコープ内でしか定義されていないので、関数の外のどこからもアクセスできません。

-
function numbers() {
+
function numbers() {
   var num1 = 2,
       num2 = 3;
   return num1 + num2;
@@ -54,7 +54,7 @@ console.log(num1); // ReferenceError num1 is not defined.

しかし、関数はそれが定義されたスコープ内で定義されたすべての変数と関数にアクセスすることができます。言い換えれば、グローバルスコープで定義された関数は、グローバルスコープ内で定義されたすべての変数にアクセスすることができます。/p>

-
var num1 = 2,
+
var num1 = 2,
     num2 = 3;
 
 function numbers() {
@@ -63,10 +63,10 @@ function numbers() {
 
 console.log(numbers()); // 5
-

関連情報

+

関連情報

-- cgit v1.2.3-54-g00ecf