From fa9d0b4ad49db970ba8707a4f6ab9ce17b5383b8 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Fri, 25 Jun 2021 01:40:44 +0900 Subject: Web/JavaScript/Reference/Errors/P-V* を更新 (#1205) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Web/JavaScript/Reference/Errors/P-V* を更新 2021/06/14 時点の英語版に同期 * スラッグを修正 --- .../typed_array_invalid_arguments/index.html | 3 +- .../reference/errors/precision_range/index.html | 202 +++++++++---------- .../errors/property_access_denied/index.html | 102 +++++----- .../reference/errors/read-only/index.html | 48 +++-- .../errors/redeclared_parameter/index.html | 123 ++++++------ .../index.html | 38 ++-- .../errors/reserved_identifier/index.html | 160 +++++++-------- .../errors/resulting_string_too_large/index.html | 104 +++++----- .../reference/errors/stmt_after_return/index.html | 162 +++++++-------- .../errors/strict_non_simple_params/index.html | 222 ++++++++++----------- .../reference/errors/undeclared_var/index.html | 4 +- .../reference/errors/undefined_prop/index.html | 118 +++++------ .../reference/errors/unexpected_token/index.html | 164 +++++++-------- .../reference/errors/unexpected_type/index.html | 153 +++++++------- .../errors/unnamed_function_statement/index.html | 47 +++-- .../errors/unterminated_string_literal/index.html | 138 ++++++------- .../reference/errors/var_hides_argument/index.html | 31 +-- 17 files changed, 918 insertions(+), 901 deletions(-) (limited to 'files/ja') diff --git a/files/ja/orphaned/web/javascript/reference/errors/typed_array_invalid_arguments/index.html b/files/ja/orphaned/web/javascript/reference/errors/typed_array_invalid_arguments/index.html index b02af7aa13..7f21add937 100644 --- a/files/ja/orphaned/web/javascript/reference/errors/typed_array_invalid_arguments/index.html +++ b/files/ja/orphaned/web/javascript/reference/errors/typed_array_invalid_arguments/index.html @@ -7,7 +7,6 @@ tags: - JavaScript - TypeError translation_of: Web/JavaScript/Reference/Errors/Typed_array_invalid_arguments -original_slug: Web/JavaScript/Reference/Errors/Typed_array_invalid_arguments ---
{{jsSidebar("Errors")}}
@@ -15,7 +14,7 @@ original_slug: Web/JavaScript/Reference/Errors/Typed_array_invalid_arguments
TypeError: invalid arguments (Firefox)
-

エラータイプ

+

エラーの種類

{{jsxref("TypeError")}}

diff --git a/files/ja/web/javascript/reference/errors/precision_range/index.html b/files/ja/web/javascript/reference/errors/precision_range/index.html index c593c2b225..08b07dd34f 100644 --- a/files/ja/web/javascript/reference/errors/precision_range/index.html +++ b/files/ja/web/javascript/reference/errors/precision_range/index.html @@ -1,101 +1,101 @@ ---- -title: 'RangeError: precision is out of range' -slug: Web/JavaScript/Reference/Errors/Precision_range -tags: -- Error -- Errors -- JavaScript -- RangeError -translation_of: Web/JavaScript/Reference/Errors/Precision_range ---- -
{{jsSidebar("Errors")}}
- -

JavaScript の例外 "precision is out of range" は、 toFixed または toPrecision に 0 から 20 (または 21) までの範囲外の数値が渡された場合に発生します。

- -

メッセージ

- -
RangeError: The number of fractional digits is out of range (Edge)
-RangeError: The precision is out of range (Edge)
-RangeError: precision {0} out of range (Firefox)
-RangeError: toExponential() argument must be between 0 and 20 (Chrome)
-RangeError: toFixed() digits argument must be between 0 and 20 (Chrome)
-RangeError: toPrecision() argument must be between 1 and 21 (Chrome)
-
- -

エラー種別

- -

{{jsxref("RangeError")}}

- -

原因

- -

これらのメソッドのいずれかで、 範囲外の精度を引数を使用しています。

- - - -

これらのメソッドで許可されている範囲は、通常 0 と 20(または 21)の間です。しかし、ECMAScript 仕様では、この範囲の拡張が認められています。

- - - - - - - - - - - - - - - - - - - - - - - - - - -
メソッドFirefox (SpiderMonkey)Chrome, Opera (V8)
{{jsxref("Number.prototype.toExponential()")}}0 から 1000 から 20
{{jsxref("Number.prototype.toFixed()")}}-20 から 1000 から 20
{{jsxref("Number.prototype.toPrecision()")}}1 から 1001 から 21
- -

- -

無効なケース

- -
77.1234.toExponential(-1);  // RangeError
-77.1234.toExponential(101); // RangeError
-
-2.34.toFixed(-100);         // RangeError
-2.34.toFixed(1001);         // RangeError
-
-1234.5.toPrecision(-1);     // RangeError
-1234.5.toPrecision(101);    // RangeError
-
- -

有効なケース

- -
77.1234.toExponential(4); // 7.7123e+1
-77.1234.toExponential(2); // 7.71e+1
-
-2.34.toFixed(1); // 2.3
-2.35.toFixed(1); // 2.4 (この場合は丸めが発生することに注意してください)
-
-5.123456.toPrecision(5); // 5.1235
-5.123456.toPrecision(2); // 5.1
-5.123456.toPrecision(1); // 5
-
- -

関連情報

- - +--- +title: 'RangeError: precision is out of range' +slug: Web/JavaScript/Reference/Errors/Precision_range +tags: +- Error +- Errors +- JavaScript +- RangeError +translation_of: Web/JavaScript/Reference/Errors/Precision_range +--- +
{{jsSidebar("Errors")}}
+ +

JavaScript の例外 "precision is out of range" は、 toFixed または toPrecision に 0 から 20 (または 21) までの範囲外の数値が渡された場合に発生します。

+ +

エラーメッセージ

+ +
RangeError: The number of fractional digits is out of range (Edge)
+RangeError: The precision is out of range (Edge)
+RangeError: precision {0} out of range (Firefox)
+RangeError: toExponential() argument must be between 0 and 20 (Chrome)
+RangeError: toFixed() digits argument must be between 0 and 20 (Chrome)
+RangeError: toPrecision() argument must be between 1 and 21 (Chrome)
+
+ +

エラーの種類

+ +

{{jsxref("RangeError")}}

+ +

エラーの原因

+ +

これらのメソッドのいずれかで、 範囲外の精度を引数を使用しています。

+ + + +

これらのメソッドで許可されている範囲は、通常 0 と 20(または 21)の間です。しかし、ECMAScript 仕様では、この範囲の拡張が認められています。

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッドFirefox (SpiderMonkey)Chrome, Opera (V8)
{{jsxref("Number.prototype.toExponential()")}}0 から 1000 から 20
{{jsxref("Number.prototype.toFixed()")}}-20 から 1000 から 20
{{jsxref("Number.prototype.toPrecision()")}}1 から 1001 から 21
+ +

+ +

無効なケース

+ +
77.1234.toExponential(-1);  // RangeError
+77.1234.toExponential(101); // RangeError
+
+2.34.toFixed(-100);         // RangeError
+2.34.toFixed(1001);         // RangeError
+
+1234.5.toPrecision(-1);     // RangeError
+1234.5.toPrecision(101);    // RangeError
+
+ +

有効な場合

+ +
77.1234.toExponential(4); // 7.7123e+1
+77.1234.toExponential(2); // 7.71e+1
+
+2.34.toFixed(1); // 2.3
+2.35.toFixed(1); // 2.4 (この場合は丸めが発生することに注意してください)
+
+5.123456.toPrecision(5); // 5.1235
+5.123456.toPrecision(2); // 5.1
+5.123456.toPrecision(1); // 5
+
+ +

関連情報

+ + diff --git a/files/ja/web/javascript/reference/errors/property_access_denied/index.html b/files/ja/web/javascript/reference/errors/property_access_denied/index.html index 30015bdc4f..0d3057702a 100644 --- a/files/ja/web/javascript/reference/errors/property_access_denied/index.html +++ b/files/ja/web/javascript/reference/errors/property_access_denied/index.html @@ -1,51 +1,51 @@ ---- -title: 'Error: Permission denied to access property "x"' -slug: Web/JavaScript/Reference/Errors/Property_access_denied -tags: - - Error - - Errors - - JavaScript - - Security -translation_of: Web/JavaScript/Reference/Errors/Property_access_denied ---- -
{{jsSidebar("Errors")}}
- -

JavaScript の例外 "Permission denied to access property" は、権限がない状態でオブジェクトへのアクセスの試行があった場合に発生します。

- -

メッセージ

- -
Error: Permission denied to access property "x"
-
- -

エラー種別

- -

{{jsxref("Error")}}

- -

原因

- -

権限がない状態でオブジェクトへのアクセスの試行がありました。これは異なるドメインから読み込んだ {{HTMLElement("iframe")}} 要素が同一オリジンポリシーに違反する場合などです。

- -

- -

文書にアクセスする権限がない

- -
<!DOCTYPE html>
-<html>
-  <head>
-    <iframe id="myframe" src="http://www1.w3c-test.org/common/blank.html"></iframe>
-    <script>
-      onload = function() {
-        console.log(frames[0].document);
-        // Error: Permission denied to access property "document"
-      }
-    </script>
-  </head>
-  <body></body>
-</html>
- -

関連情報

- - +--- +title: 'Error: Permission denied to access property "x"' +slug: Web/JavaScript/Reference/Errors/Property_access_denied +tags: +- Error +- Errors +- JavaScript +- Security +translation_of: Web/JavaScript/Reference/Errors/Property_access_denied +--- +
{{jsSidebar("Errors")}}
+ +

JavaScript の例外 "Permission denied to access property" は、権限がない状態でオブジェクトへのアクセスの試行があった場合に発生します。

+ +

エラーメッセージ

+ +
Error: Permission denied to access property "x"
+
+ +

エラーの種類

+ +

{{jsxref("Error")}}

+ +

エラーの原因

+ +

権限がない状態でオブジェクトへのアクセスの試行がありました。これは異なるドメインから読み込んだ {{HTMLElement("iframe")}} 要素が同一オリジンポリシーに違反する場合などです。

+ +

+ +

文書にアクセスする権限がない

+ +
<!DOCTYPE html>
+<html>
+  <head>
+    <iframe id="myframe" src="http://www1.w3c-test.org/common/blank.html"></iframe>
+    <script>
+      onload = function() {
+        console.log(frames[0].document);
+        // Error: Permission denied to access property "document"
+      }
+    </script>
+  </head>
+  <body></body>
+</html>
+ +

関連情報

+ + diff --git a/files/ja/web/javascript/reference/errors/read-only/index.html b/files/ja/web/javascript/reference/errors/read-only/index.html index 7aa68e012f..f3c6566eac 100644 --- a/files/ja/web/javascript/reference/errors/read-only/index.html +++ b/files/ja/web/javascript/reference/errors/read-only/index.html @@ -2,6 +2,7 @@ title: 'TypeError: "x" is read-only' slug: Web/JavaScript/Reference/Errors/Read-only tags: + - Error - Errors - JavaScript - TypeError @@ -9,21 +10,26 @@ translation_of: Web/JavaScript/Reference/Errors/Read-only ---
{{jsSidebar("Errors")}}
-

メッセージ

+

The JavaScript strict + mode-only exception "is read-only" occurs when a global variable or object + property that was assigned to is a read-only property.

-
TypeError: "x" is read-only (Firefox)
+

エラーメッセージ

+ +
TypeError: Assignment to read-only properties is not allowed in strict mode (Edge)
+TypeError: "x" is read-only (Firefox)
 TypeError: 0 is read-only (Firefox)
 TypeError: Cannot assign to read only property 'x' of #<Object> (Chrome)
 TypeError: Cannot assign to read only property '0' of [object Array] (Chrome)
 
-

エラータイプ

+

エラーの種類

{{jsxref("TypeError")}}

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

-

値を割り当てようとしたグローバル変数、またはオブジェクトのプロパティが読み取り専用プロパティです。(技術的には、 non-writable データプロパティ です。)

+

値を割り当てようとしたグローバル変数、またはオブジェクトのプロパティが読み取り専用プロパティです。 (技術的には、 non-writable データプロパティ です。)

このエラーは、strict モードコード のときにだけ発生します。strict コードではない場合、割り当ては無視されるだけです。

@@ -33,40 +39,40 @@ TypeError: Cannot assign to read only property '0' of [object Array] (Chrome)

読み取り専用プロパティはさほど一般的ではありませんが、 {{jsxref("Object.defineProperty()")}}、または {{jsxref("Object.freeze()")}} を使用して生成できます。

-
"use strict";
-var obj = Object.freeze({name: "Elsa", score: 157});
+
'use strict';
+var obj = Object.freeze({name: 'Elsa', score: 157});
 obj.score = 0;  // TypeError
 
-"use strict";
-Object.defineProperty(this, "LUNG_COUNT", {value: 2, writable: false});
+'use strict';
+Object.defineProperty(this, 'LUNG_COUNT', {value: 2, writable: false});
 LUNG_COUNT = 3;  // TypeError
 
-"use strict";
+'use strict';
 var frozenArray = Object.freeze([0, 1, 2]);
 frozenArray[0]++;  // TypeError
 
-

JavaScript のビルトインにも、いくつか読み取り専用プロパティがあります。 Math の定数を再定義しようとしたとします。

+

JavaScript の組み込みにも、いくつか読み取り専用プロパティがあります。 Math の定数を再定義しようとしたとします。

-
"use strict";
+
'use strict';
 Math.PI = 4;  // TypeError
 

残念ながらできません。

-

グローバル変数の undefined も読み取り専用のため、このようにすると悪名高い "undefined is not a function" エラーが発生します:

+

グローバル変数の undefined も読み取り専用のため、このようにすると悪名高い "undefined is not a function" エラーが発生します。

-
"use strict";
-undefined = function () {};  // TypeError: "undefined" is read-only
+
'use strict';
+undefined = function() {};  // TypeError: "undefined" is read-only
 
-

有効なケース

+

有効な場合

-
"use strict";
-var obj = Object.freeze({name: "Score", points: 157});
+
'use strict';
+var obj = Object.freeze({name: 'Score', points: 157});
 obj = {name: obj.name, points: 0};   // 新しいオブジェクトで置き換える
 
-"use strict";
+'use strict';
 var LUNG_COUNT = 2;  // `var` が使われているので、読み取り専用ではない
 LUNG_COUNT = 3;  // ok (解剖学的にはおかしいけれども)
 
@@ -74,8 +80,6 @@ LUNG_COUNT = 3; // ok (解剖学的にはおかしいけれども)

関連項目

diff --git a/files/ja/web/javascript/reference/errors/redeclared_parameter/index.html b/files/ja/web/javascript/reference/errors/redeclared_parameter/index.html index c8baee62ea..ced5764f2f 100644 --- a/files/ja/web/javascript/reference/errors/redeclared_parameter/index.html +++ b/files/ja/web/javascript/reference/errors/redeclared_parameter/index.html @@ -1,61 +1,62 @@ ---- -title: 'SyntaxError: redeclaration of formal parameter "x"' -slug: Web/JavaScript/Reference/Errors/Redeclared_parameter -tags: - - Error - - Errors - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Redeclared_parameter ---- -
{{jsSidebar("Errors")}}
- -

JavaScript の例外 "redeclaration of formal parameter" は、関数の引数名としてある変数名が発生した後、関数本体内の {{jsxref("Statements/let", "let")}} 代入文を使用して同じ変数名を再度宣言すると発生します。

- -

メッセージ

- -
SyntaxError: Let/Const redeclaration (Edge)
-SyntaxError: redeclaration of formal parameter "x" (Firefox)
-SyntaxError: Identifier "x" has already been declared (Chrome)
-
- -

エラー種別

- -

{{jsxref("SyntaxError")}}

- -

エラーの原因

- -

関数の引数と同名の変数があり、関数内で再度 {{jsxref("Statements/let", "let")}} 代入文を使用して再宣言しています。 JavaScript では、同じ関数内やブロックスコープ内で let を使用して同じ変数を再宣言できません。

- -

- -

再宣言した引数

- -

この場合、変数 "arg" は、引数を再宣言しています。

- -
function f(arg) {
-  let arg = 'foo';
-}
-
-// SyntaxError: redeclaration of formal parameter "arg"
-
- -

関数の本体内で "arg" の値を変更したい場合、これを行うことはできますが、再び同じ変数を宣言する必要はありません。言い換えれば、 let キーワードを省略することができます。新しい変数を生成する場合は、既存の関数の引数と競合するので、変数名を変更する必要があります。

- -
function f(arg) {
-  arg = 'foo';
-}
-
-function f(arg) {
-  let bar = 'foo';
-}
-
- -

関連情報

- -
    -
  • {{jsxref("Statements/let", "let")}}
  • -
  • {{jsxref("Statements/const", "const")}}
  • -
  • {{jsxref("Statements/var", "var")}}
  • -
  • JavaScript ガイド 内の 宣言
  • -
+--- +title: 'SyntaxError: redeclaration of formal parameter "x"' +slug: Web/JavaScript/Reference/Errors/Redeclared_parameter +tags: + - Error + - Errors + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Redeclared_parameter +--- +
{{jsSidebar("Errors")}}
+ +

JavaScript の例外 "redeclaration of formal parameter" は、関数の引数名としてある変数名が発生した後、関数本体内の {{jsxref("Statements/let", "let")}} 代入文を使用して同じ変数名を再度宣言すると発生します。

+ +

エラーメッセージ

+ +
SyntaxError: Let/Const redeclaration (Edge)
+SyntaxError: redeclaration of formal parameter "x" (Firefox)
+SyntaxError: Identifier "x" has already been declared (Chrome)
+
+ +

エラーの種類

+ +

{{jsxref("SyntaxError")}}

+ +

エラーの原因

+ +

関数の引数と同名の変数があり、関数内で再度 {{jsxref("Statements/let", "let")}} 代入文を使用して再宣言しています。 JavaScript では、同じ関数内やブロックスコープ内で let を使用して同じ変数を再宣言できません。

+ +

+ +

再宣言した引数

+ +

この場合、変数 "arg" は、引数を再宣言しています。

+ +
function f(arg) {
+  let arg = 'foo';
+}
+
+// SyntaxError: redeclaration of formal parameter "arg"
+
+ +

関数の本体内で "arg" の値を変更したい場合、これを行うことはできますが、再び同じ変数を宣言する必要はありません。言い換えれば、 let キーワードを省略することができます。新しい変数を生成する場合は、既存の関数の引数と競合するので、変数名を変更する必要があります。

+ +
function f(arg) {
+  arg = 'foo';
+}
+
+function f(arg) {
+  let bar = 'foo';
+}
+
+ +

関連情報

+ +
    +
  • {{jsxref("Statements/let", "let")}}
  • +
  • {{jsxref("Statements/const", "const")}}
  • +
  • {{jsxref("Statements/var", "var")}}
  • +
  • JavaScript ガイド 内の 宣言 +
  • +
diff --git a/files/ja/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html b/files/ja/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html index 4af643bcdb..e8051bd023 100644 --- a/files/ja/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html +++ b/files/ja/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html @@ -2,26 +2,28 @@ title: 'TypeError: Reduce of empty array with no initial value' slug: Web/JavaScript/Reference/Errors/Reduce_of_empty_array_with_no_initial_value tags: - - Error - - JavaScript - - Reference - - TypeError +- Error +- JavaScript +- Reference +- TypeError translation_of: Web/JavaScript/Reference/Errors/Reduce_of_empty_array_with_no_initial_value ---
{{jsSidebar("Errors")}}
-

メッセージ

+

JavaScript の例外 "reduce of empty array with no initial value" は、 reduce 関数が使用されたときに発生します。

-
TypeError: reduce of empty array with no initial value
+

エラーメッセージ

+ +
TypeError: reduce of empty array with no initial value
 
-

エラータイプ

+

エラーの種類

{{jsxref("TypeError")}}

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

-

JavaScript には、複数の reduce 関数があります:

+

JavaScript には、複数の reduce 関数があります。

  • {{jsxref("Array.prototype.reduce()")}}、{{jsxref("Array.prototype.reduceRight()")}} と
  • @@ -46,7 +48,7 @@ ints.filter(x => x > 0) // removes all elements var name_list = Array.prototype.reduce.call(names, (acc, name) => acc + ", " + name);
-

有効なケース

+

有効な場合

これらの問題は、2 つの異なる方法で解決できます。

@@ -57,7 +59,7 @@ ints.filter(x => x < 0) // removes all elements .reduce((x, y) => x + y, 0) // the initial value is the neutral element of the addition
-

もう 1 つの方法は、reduce を呼び出す前、または予期しないダミーの初期値を追加した後にコールバックで空のケースを処理する 2 つの方法です。

+

もう 1 つの方法は、reduce を呼び出す前、または予期しないダミーの初期値を追加した後にコールバックで空のケースを処理する方法です。

var names = document.getElementsByClassName("names");
 
@@ -77,12 +79,12 @@ var name_list2 = Array.prototype.reduce.call(names, (acc, name) => {
 

関連項目

    -
  • {{jsxref("Array.prototype.reduce()")}}
  • -
  • {{jsxref("Array.prototype.reduceRight()")}}
  • -
  • {{jsxref("TypedArray.prototype.reduce()")}}
  • -
  • {{jsxref("TypedArray.prototype.reduceRight()")}}
  • -
  • {{jsxref("Array")}}
  • -
  • {{jsxref("TypedArray")}}
  • -
  • {{jsxref("Array.prototype.filter()")}}
  • -
  • {{jsxref("TypedArray.prototype.filter()")}}
  • +
  • {{jsxref("Array.prototype.reduce()")}}
  • +
  • {{jsxref("Array.prototype.reduceRight()")}}
  • +
  • {{jsxref("TypedArray.prototype.reduce()")}}
  • +
  • {{jsxref("TypedArray.prototype.reduceRight()")}}
  • +
  • {{jsxref("Array")}}
  • +
  • {{jsxref("TypedArray")}}
  • +
  • {{jsxref("Array.prototype.filter()")}}
  • +
  • {{jsxref("TypedArray.prototype.filter()")}}
diff --git a/files/ja/web/javascript/reference/errors/reserved_identifier/index.html b/files/ja/web/javascript/reference/errors/reserved_identifier/index.html index 7f2ef49d74..fff7cdc308 100644 --- a/files/ja/web/javascript/reference/errors/reserved_identifier/index.html +++ b/files/ja/web/javascript/reference/errors/reserved_identifier/index.html @@ -1,80 +1,80 @@ ---- -title: 'SyntaxError: "x" is a reserved identifier' -slug: Web/JavaScript/Reference/Errors/Reserved_identifier -tags: - - Error - - Errors - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Reserved_identifier ---- -
{{jsSidebar("Errors")}}
- -

メッセージ

- -
SyntaxError: "x" is a reserved identifier (Firefox)
-SyntaxError: Unexpected reserved word (Chrome)
- -

エラータイプ

- -

{{jsxref("SyntaxError")}}

- -

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

- -

予約語を識別子として使用した場合、エラーをスローします。これらは strict モードと通常モードの双方で予約されています:

- -
    -
  • enum
  • -
- -

次のものは strict モードのコードでのみ予約されています:

- -
    -
  • implements
  • -
  • interface
  • -
  • {{jsxref("Statements/let", "let")}}
  • -
  • package
  • -
  • private
  • -
  • protected
  • -
  • public
  • -
  • static
  • -
- -

- -

Strict モードと 非 Strict モードで予約されているキーワード

- -

enum 識別子は全般的に予約されています。

- -
var enum = { RED: 0, GREEN: 1, BLUE: 2 };
-// SyntaxError: enum is a reserved identifier
-
- -

strict モードのコードでは、より多くの識別子が予約されています。

- -
"use strict";
-var package = ["potatoes", "rice", "fries"];
-// SyntaxError: package is a reserved identifier
-
- -

これらの変数名を変更する必要があります。

- -
var colorEnum = { RED: 0, GREEN: 1, BLUE: 2 };
-var list = ["potatoes", "rice", "fries"];
- -

古いブラウザーを更新する

- -

たとえば、letclass をまだ実装していない古いブラウザーを使用している場合、それらの新しい言語機能をサポートしているより新しいブラウザーにアップデートすべきです。

- -
"use strict";
-class DocArchiver {}
-
-// SyntaxError: class is a reserved identifier
-// (たとえば、Firefox 44 以前の古いブラウザーはエラーをスローします)
-
- -

関連項目

- - +--- +title: 'SyntaxError: "x" is a reserved identifier' +slug: Web/JavaScript/Reference/Errors/Reserved_identifier +tags: + - Error + - Errors + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Reserved_identifier +--- +
{{jsSidebar("Errors")}}
+ +

メッセージ

+ +
SyntaxError: "x" is a reserved identifier (Firefox)
+SyntaxError: Unexpected reserved word (Chrome)
+ +

エラーの種類

+ +

{{jsxref("SyntaxError")}}

+ +

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

+ +

予約語を識別子として使用した場合、エラーをスローします。これらは strict モードと通常モードの双方で予約されています:

+ +
    +
  • enum
  • +
+ +

次のものは strict モードのコードでのみ予約されています:

+ +
    +
  • implements
  • +
  • interface
  • +
  • {{jsxref("Statements/let", "let")}}
  • +
  • package
  • +
  • private
  • +
  • protected
  • +
  • public
  • +
  • static
  • +
+ +

+ +

Strict モードと 非 Strict モードで予約されているキーワード

+ +

enum 識別子は全般的に予約されています。

+ +
var enum = { RED: 0, GREEN: 1, BLUE: 2 };
+// SyntaxError: enum is a reserved identifier
+
+ +

strict モードのコードでは、より多くの識別子が予約されています。

+ +
"use strict";
+var package = ["potatoes", "rice", "fries"];
+// SyntaxError: package is a reserved identifier
+
+ +

これらの変数名を変更する必要があります。

+ +
var colorEnum = { RED: 0, GREEN: 1, BLUE: 2 };
+var list = ["potatoes", "rice", "fries"];
+ +

古いブラウザーを更新する

+ +

たとえば、letclass をまだ実装していない古いブラウザーを使用している場合、それらの新しい言語機能をサポートしているより新しいブラウザーにアップデートすべきです。

+ +
"use strict";
+class DocArchiver {}
+
+// SyntaxError: class is a reserved identifier
+// (たとえば、Firefox 44 以前の古いブラウザーはエラーをスローします)
+
+ +

関連項目

+ + diff --git a/files/ja/web/javascript/reference/errors/resulting_string_too_large/index.html b/files/ja/web/javascript/reference/errors/resulting_string_too_large/index.html index f72ba9db84..ae4809f1fe 100644 --- a/files/ja/web/javascript/reference/errors/resulting_string_too_large/index.html +++ b/files/ja/web/javascript/reference/errors/resulting_string_too_large/index.html @@ -1,52 +1,52 @@ ---- -title: 'RangeError: repeat count must be less than infinity' -slug: Web/JavaScript/Reference/Errors/Resulting_string_too_large -tags: -- Error -- Errors -- JavaScript -- RangeError -translation_of: Web/JavaScript/Reference/Errors/Resulting_string_too_large ---- -
{{jsSidebar("Errors")}}
- -

JavaScript の例外 "repeat count must be less than infinity" は、 {{jsxref("String.prototype.repeat()")}} メソッドが使用され、 count 引数が無限大である場合に発生します。

- -

メッセージ

- -
RangeError: argument out of range (Edge)
-RangeError: repeat count must be less than infinity and not overflow maximum string size (Firefox)
-RangeError: Invalid count value (Chrome)
-
- -

エラー種別

- -

{{jsxref("RangeError")}}

- -

原因

- -

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

- -

結果の文字列は、文字列サイズの最大値以上にはできません。これは JavaScript エンジンによって異なります。 Firefox (SpiderMonkey) の最大文字列数は、 228 -1 (0xFFFFFFF)です。

- -

- -

無効なケース

- -
'abc'.repeat(Infinity); // RangeError
-'a'.repeat(2**28);      // RangeError
-
- -

有効なケース

- -
'abc'.repeat(0);    // ''
-'abc'.repeat(1);    // 'abc'
-'abc'.repeat(2);    // 'abcabc'
-'abc'.repeat(3.5);  // 'abcabcabc' (count は整数に変換されます)
-
- -

関連情報

- -
    -
  • {{jsxref("String.prototype.repeat()")}}
  • -
+--- +title: 'RangeError: repeat count must be less than infinity' +slug: Web/JavaScript/Reference/Errors/Resulting_string_too_large +tags: +- Error +- Errors +- JavaScript +- RangeError +translation_of: Web/JavaScript/Reference/Errors/Resulting_string_too_large +--- +
{{jsSidebar("Errors")}}
+ +

JavaScript の例外 "repeat count must be less than infinity" は、 {{jsxref("String.prototype.repeat()")}} メソッドが使用され、 count 引数が無限大である場合に発生します。

+ +

エラーメッセージ

+ +
RangeError: argument out of range (Edge)
+RangeError: repeat count must be less than infinity and not overflow maximum string size (Firefox)
+RangeError: Invalid count value (Chrome)
+
+ +

エラーの種類

+ +

{{jsxref("RangeError")}}

+ +

エラーの原因

+ +

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

+ +

結果の文字列は、文字列サイズの最大値以上にはできません。これは JavaScript エンジンによって異なります。 Firefox (SpiderMonkey) の最大文字列数は、 228 -1 (0xFFFFFFF)です。

+ +

+ +

無効なケース

+ +
'abc'.repeat(Infinity); // RangeError
+'a'.repeat(2**28);      // RangeError
+
+ +

有効な場合

+ +
'abc'.repeat(0);    // ''
+'abc'.repeat(1);    // 'abc'
+'abc'.repeat(2);    // 'abcabc'
+'abc'.repeat(3.5);  // 'abcabcabc' (count は整数に変換されます)
+
+ +

関連情報

+ +
    +
  • {{jsxref("String.prototype.repeat()")}}
  • +
diff --git a/files/ja/web/javascript/reference/errors/stmt_after_return/index.html b/files/ja/web/javascript/reference/errors/stmt_after_return/index.html index e41eaa6b86..fb40ebd2ea 100644 --- a/files/ja/web/javascript/reference/errors/stmt_after_return/index.html +++ b/files/ja/web/javascript/reference/errors/stmt_after_return/index.html @@ -1,81 +1,81 @@ ---- -title: 'Warning: unreachable code after return statement' -slug: Web/JavaScript/Reference/Errors/Stmt_after_return -tags: - - JavaScript - - Warning - - エラー - - 警告 -translation_of: Web/JavaScript/Reference/Errors/Stmt_after_return ---- -
{{jsSidebar("Errors")}}
- -

JavaScript の警告 "unreachable code after return statement" は、 {{jsxref("Statements/return", "return")}} 文の後で式を使用したり、セミコロンのない return 文を使用して、その直後に式を置いたりした場合に発生します。

- -

メッセージ

- -
Warning: unreachable code after return statement (Firefox)
-
- -

エラー種別

- -

警告

- -

原因

- -

unreachable code after a return statement は、以下のような場合に発生することがあります。

- -
    -
  • {{jsxref("Statements/return", "return")}} 文の後で式を使用している場合
  • -
  • セミコロンがない return 文の直後に式を置いている場合
  • -
- -

有効な return 文の後に式がある場合、警告は return 文の後のコードには到達しない、つまり決して実行されないことを表します。

- -

return 文の後にセミコロンをつけるべきなのはなぜでしょうか。セミコロンがない return 文の場合、開発者が次の行にある文を返そうとしているのか、処理を停止して戻ろうとしているのかが不明確になってしまいます。この警告は、 return 文の書かれ方にあいまいさがあることを示しています。

- -

以下の文の場合、セミコロンがない場合の return の警告は表示されません。

- -
    -
  • {{jsxref("Statements/throw", "throw")}}
  • -
  • {{jsxref("Statements/break", "break")}}
  • -
  • {{jsxref("Statements/var", "var")}}
  • -
  • {{jsxref("Statements/function", "function")}}
  • -
- -

- -

無効な場合

- -
function f() {
-  var x = 3;
-  x += 4;
-  return x;   // return は直ちに関数を終了します。
-  x -= 3;     // そのため、この行は実行されません。到達不可能です。
-}
-
-function f() {
-  return     // これは `return;` のように扱われます。
-    3 + 4;   // そのため、関数を抜け出し、この行には決して到達しません。
-}
-
- -

妥当な場合

- -
function f() {
-  var x = 3;
-  x += 4;
-  x -= 3;
-  return x;  // OK: すべての式の後に return があります。
-}
-
-function f() {
-  return 3 + 4  // OK: 同じ行に式があるセミコロンなしの return です。
-}
-
- -

関連情報

- -
    -
  • {{jsxref("Statements/return", "自動セミコロン挿入", "#Automatic_Semicolon_Insertion", 1)}}
  • -
+--- +title: 'Warning: unreachable code after return statement' +slug: Web/JavaScript/Reference/Errors/Stmt_after_return +tags: + - JavaScript + - Warning + - エラー + - 警告 +translation_of: Web/JavaScript/Reference/Errors/Stmt_after_return +--- +
{{jsSidebar("Errors")}}
+ +

JavaScript の警告 "unreachable code after return statement" は、 {{jsxref("Statements/return", "return")}} 文の後で式を使用したり、セミコロンのない return 文を使用して、その直後に式を置いたりした場合に発生します。

+ +

エラーメッセージ

+ +
Warning: unreachable code after return statement (Firefox)
+
+ +

エラーの種類

+ +

警告

+ +

エラーの原因

+ +

unreachable code after a return statement は、以下のような場合に発生することがあります。

+ +
    +
  • {{jsxref("Statements/return", "return")}} 文の後で式を使用している場合
  • +
  • セミコロンがない return 文の直後に式を置いている場合
  • +
+ +

有効な return 文の後に式がある場合、警告は return 文の後のコードには到達しない、つまり決して実行されないことを表します。

+ +

return 文の後にセミコロンをつけるべきなのはなぜでしょうか。セミコロンがない return 文の場合、開発者が次の行にある文を返そうとしているのか、処理を停止して戻ろうとしているのかが不明確になってしまいます。この警告は、 return 文の書かれ方にあいまいさがあることを示しています。

+ +

以下の文の場合、セミコロンがない場合の return の警告は表示されません。

+ +
    +
  • {{jsxref("Statements/throw", "throw")}}
  • +
  • {{jsxref("Statements/break", "break")}}
  • +
  • {{jsxref("Statements/var", "var")}}
  • +
  • {{jsxref("Statements/function", "function")}}
  • +
+ +

+ +

無効な場合

+ +
function f() {
+  var x = 3;
+  x += 4;
+  return x;   // return は直ちに関数を終了します。
+  x -= 3;     // そのため、この行は実行されません。到達不可能です。
+}
+
+function f() {
+  return     // これは `return;` のように扱われます。
+    3 + 4;   // そのため、関数を抜け出し、この行には決して到達しません。
+}
+
+ +

妥当な場合

+ +
function f() {
+  var x = 3;
+  x += 4;
+  x -= 3;
+  return x;  // OK: すべての式の後に return があります。
+}
+
+function f() {
+  return 3 + 4  // OK: 同じ行に式があるセミコロンなしの return です。
+}
+
+ +

関連情報

+ +
    +
  • {{jsxref("Statements/return", "自動セミコロン挿入", "#Automatic_Semicolon_Insertion", 1)}}
  • +
diff --git a/files/ja/web/javascript/reference/errors/strict_non_simple_params/index.html b/files/ja/web/javascript/reference/errors/strict_non_simple_params/index.html index db18025e07..fc033a3b76 100644 --- a/files/ja/web/javascript/reference/errors/strict_non_simple_params/index.html +++ b/files/ja/web/javascript/reference/errors/strict_non_simple_params/index.html @@ -1,111 +1,111 @@ ---- -title: 'SyntaxError: "use strict" not allowed in function with non-simple parameters' -slug: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params -tags: - - Errors - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params ---- -
{{jsSidebar("Errors")}}
- -

メッセージ

- -
Firefox:
-SyntaxError: "use strict" not allowed in function with default parameter
-SyntaxError: "use strict" not allowed in function with rest parameter
-SyntaxError: "use strict" not allowed in function with destructuring parameter
-
-Chrome:
-SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list
-
- -

エラータイプ

- -

{{jsxref("SyntaxError")}}。

- -

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

- -

次の引数のうちいずれかを持つ関数の先頭に "use strict" ディレクティブが書かれています:

- -
    -
  • {{jsxref("Functions/Default_parameters", "Default parameters", "", 1)}}
  • -
  • {{jsxref("Functions/rest_parameters", "Rest parameters", "", 1)}}
  • -
  • {{jsxref("Operators/Destructuring_assignment", "Destructuring parameters", "", 1)}}
  • -
- -

ECMAScript 仕様に則って、このような関数の先頭では "use strict" を使用できません。

- -

- -

Function ステートメント

- -

このケースでは、関数 sum は既定値を持つ引数 a=1b=2 を持っています:

- -
function sum(a=1, b=2) {
-  // SyntaxError: "use strict" not allowed in function with default parameter
-  "use strict";
-  return a + b;
-}
-
- -

関数を strict モードにしたい、かつスクリプト全体、またはエンクロージャー関数が strict モードになってもよいなら、"use strict" ディレクティブを関数の外側に移動できます:

- -
"use strict";
-function sum(a=1, b=2) {
-  return a + b;
-}
-
- -

Function 式

- -

function 式では、別の回避策をとることができます:

- -
var sum = function sum([a, b]) {
-  // SyntaxError: "use strict" not allowed in function with destructuring parameter
-  "use strict";
-  return a + b;
-};
-
- -

これは、次の式に変換できます:

- -
var sum = (function() {
-  "use strict";
-  return function sum([a, b]) {
-    return a + b;
-  };
-})();
-
- -

アロー関数

- -

アロー関数が this 変数にアクセスする必要がある場合、アロー関数をエンクロージャー関数として使用できます:

- -
var callback = (...args) => {
-  // SyntaxError: "use strict" not allowed in function with rest parameter
-  "use strict";
-  return this.run(args);
-};
-
- -

これは、次の式に変換できます:

- -
var callback = (() => {
-  "use strict";
-  return (...args) => {
-    return this.run(args);
-  };
-})();
-
- -

関連項目

- -
    -
  • {{jsxref("Strict_mode", "Strict mode", "", 1)}}
  • -
  • {{jsxref("Statements/function", "function statement", "", 1)}}
  • -
  • {{jsxref("Operators/function", "function expression", "", 1)}}
  • -
  • {{jsxref("Functions/Default_parameters", "Default parameters", "", 1)}}
  • -
  • {{jsxref("Functions/rest_parameters", "Rest parameters", "", 1)}}
  • -
  • {{jsxref("Operators/Destructuring_assignment", "Destructuring parameters", "", 1)}}
  • -
+--- +title: 'SyntaxError: "use strict" not allowed in function with non-simple parameters' +slug: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params +tags: + - Errors + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params +--- +
{{jsSidebar("Errors")}}
+ +

メッセージ

+ +
Firefox:
+SyntaxError: "use strict" not allowed in function with default parameter
+SyntaxError: "use strict" not allowed in function with rest parameter
+SyntaxError: "use strict" not allowed in function with destructuring parameter
+
+Chrome:
+SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list
+
+ +

エラーの種類

+ +

{{jsxref("SyntaxError")}}。

+ +

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

+ +

次の引数のうちいずれかを持つ関数の先頭に "use strict" ディレクティブが書かれています:

+ +
    +
  • {{jsxref("Functions/Default_parameters", "Default parameters", "", 1)}}
  • +
  • {{jsxref("Functions/rest_parameters", "Rest parameters", "", 1)}}
  • +
  • {{jsxref("Operators/Destructuring_assignment", "Destructuring parameters", "", 1)}}
  • +
+ +

ECMAScript 仕様に則って、このような関数の先頭では "use strict" を使用できません。

+ +

+ +

Function ステートメント

+ +

このケースでは、関数 sum は既定値を持つ引数 a=1b=2 を持っています:

+ +
function sum(a=1, b=2) {
+  // SyntaxError: "use strict" not allowed in function with default parameter
+  "use strict";
+  return a + b;
+}
+
+ +

関数を strict モードにしたい、かつスクリプト全体、またはエンクロージャー関数が strict モードになってもよいなら、"use strict" ディレクティブを関数の外側に移動できます:

+ +
"use strict";
+function sum(a=1, b=2) {
+  return a + b;
+}
+
+ +

Function 式

+ +

function 式では、別の回避策をとることができます:

+ +
var sum = function sum([a, b]) {
+  // SyntaxError: "use strict" not allowed in function with destructuring parameter
+  "use strict";
+  return a + b;
+};
+
+ +

これは、次の式に変換できます:

+ +
var sum = (function() {
+  "use strict";
+  return function sum([a, b]) {
+    return a + b;
+  };
+})();
+
+ +

アロー関数

+ +

アロー関数が this 変数にアクセスする必要がある場合、アロー関数をエンクロージャー関数として使用できます:

+ +
var callback = (...args) => {
+  // SyntaxError: "use strict" not allowed in function with rest parameter
+  "use strict";
+  return this.run(args);
+};
+
+ +

これは、次の式に変換できます:

+ +
var callback = (() => {
+  "use strict";
+  return (...args) => {
+    return this.run(args);
+  };
+})();
+
+ +

関連項目

+ +
    +
  • {{jsxref("Strict_mode", "Strict mode", "", 1)}}
  • +
  • {{jsxref("Statements/function", "function statement", "", 1)}}
  • +
  • {{jsxref("Operators/function", "function expression", "", 1)}}
  • +
  • {{jsxref("Functions/Default_parameters", "Default parameters", "", 1)}}
  • +
  • {{jsxref("Functions/rest_parameters", "Rest parameters", "", 1)}}
  • +
  • {{jsxref("Operators/Destructuring_assignment", "Destructuring parameters", "", 1)}}
  • +
diff --git a/files/ja/web/javascript/reference/errors/undeclared_var/index.html b/files/ja/web/javascript/reference/errors/undeclared_var/index.html index e89391c3bf..7834bc2df9 100644 --- a/files/ja/web/javascript/reference/errors/undeclared_var/index.html +++ b/files/ja/web/javascript/reference/errors/undeclared_var/index.html @@ -11,7 +11,7 @@ translation_of: Web/JavaScript/Reference/Errors/Undeclared_var ---
{{jsSidebar("Errors")}}
-

JavaScript の strict モード独自の例外 "Assignment to undeclated variable" は、値が宣言されていない変数に代入されたときに発生します。

+

JavaScript の strict モード独自の例外 "Assignment to undeclated variable" は、値が宣言されていない変数に代入されたときに発生します。

エラーメッセージ

@@ -53,7 +53,7 @@ ReferenceError: Variable undefined in strict mode (Edge) foo(); // ReferenceError: assignment to undeclared variable bar
-

有効なケース

+

有効な場合

"bar" を宣言済みの変数にするために、その前に var キーワードを追加します。

diff --git a/files/ja/web/javascript/reference/errors/undefined_prop/index.html b/files/ja/web/javascript/reference/errors/undefined_prop/index.html index cb2ec02f1a..fa5c1e8067 100644 --- a/files/ja/web/javascript/reference/errors/undefined_prop/index.html +++ b/files/ja/web/javascript/reference/errors/undefined_prop/index.html @@ -1,59 +1,59 @@ ---- -title: 'ReferenceError: reference to undefined property "x"' -slug: Web/JavaScript/Reference/Errors/Undefined_prop -tags: - - Errors - - JavaScript - - ReferenceError - - Strict Mode -translation_of: Web/JavaScript/Reference/Errors/Undefined_prop ---- -
{{jsSidebar("Errors")}}
- -

メッセージ

- -
ReferenceError: reference to undefined property "x" (Firefox)
-
- -

エラータイプ

- -

strict モード でのみ、{{jsxref("ReferenceError")}} の警告が出ます。

- -

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

- -

存在しないオブジェクトのプロパティにアクセスしようとしています。プロパティにアクセスする方法は 2 つあります。詳細については、メンバー演算子参照ページを見てください。

- -

未定義プロパティを参照することによるエラーは、strict モードのコードでのみ発生します。非 strict コードでは、暗黙的に無視されます。

- -

- -

無効なケース

- -

このケースでは、"bar" は未定義のプロパティです。

- -
"use strict";
-
-var foo = {};
-foo.bar; // ReferenceError: reference to undefined property "bar"
-
- -

有効なケース

- -

エラーを避けるには、"bar" プロパティを定義するか、使用する前に "bar" プロパティが存在するか確認する必要があります(たとえば、{{jsxref("Object.prototype.hasOwnProperty()")}} メソッドを使用します)。

- -
"use strict";
-
-var foo = {};
-
-foo.bar = "moon";
-console.log(foo.bar); // "moon"
-
-if (foo.hasOwnProperty("bar") {
-  console.log(foo.bar);
-}
- -

関連項目

- - +--- +title: 'ReferenceError: reference to undefined property "x"' +slug: Web/JavaScript/Reference/Errors/Undefined_prop +tags: + - Errors + - JavaScript + - ReferenceError + - Strict Mode +translation_of: Web/JavaScript/Reference/Errors/Undefined_prop +--- +
{{jsSidebar("Errors")}}
+ +

メッセージ

+ +
ReferenceError: reference to undefined property "x" (Firefox)
+
+ +

エラーの種類

+ +

strict モード でのみ、{{jsxref("ReferenceError")}} の警告が出ます。

+ +

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

+ +

存在しないオブジェクトのプロパティにアクセスしようとしています。プロパティにアクセスする方法は 2 つあります。詳細については、メンバー演算子参照ページを見てください。

+ +

未定義プロパティを参照することによるエラーは、strict モードのコードでのみ発生します。非 strict コードでは、暗黙的に無視されます。

+ +

+ +

無効なケース

+ +

このケースでは、"bar" は未定義のプロパティです。

+ +
"use strict";
+
+var foo = {};
+foo.bar; // ReferenceError: reference to undefined property "bar"
+
+ +

有効なケース

+ +

エラーを避けるには、"bar" プロパティを定義するか、使用する前に "bar" プロパティが存在するか確認する必要があります(たとえば、{{jsxref("Object.prototype.hasOwnProperty()")}} メソッドを使用します)。

+ +
"use strict";
+
+var foo = {};
+
+foo.bar = "moon";
+console.log(foo.bar); // "moon"
+
+if (foo.hasOwnProperty("bar") {
+  console.log(foo.bar);
+}
+ +

関連項目

+ + diff --git a/files/ja/web/javascript/reference/errors/unexpected_token/index.html b/files/ja/web/javascript/reference/errors/unexpected_token/index.html index df9f554ab2..47efb24bf6 100644 --- a/files/ja/web/javascript/reference/errors/unexpected_token/index.html +++ b/files/ja/web/javascript/reference/errors/unexpected_token/index.html @@ -1,81 +1,83 @@ ---- -title: 'SyntaxError: Unexpected token' -slug: Web/JavaScript/Reference/Errors/Unexpected_token -tags: - - Error - - Errors - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Unexpected_token ---- -
{{jsSidebar("Errors")}}
- -

メッセージ

- -
SyntaxError: expected expression, got "x"
-SyntaxError: expected property name, got "x"
-SyntaxError: expected target, got "x"
-SyntaxError: expected rest argument name, got "x"
-SyntaxError: expected closing parenthesis, got "x"
-SyntaxError: expected '=>' after argument list, got "x"
-
- -

エラー種別

- -

{{jsxref("SyntaxError")}}

- -

エラーの原因

- -

特定の言語構造が予想されている箇所に、ほかのものが提供されています。これは単純なタイプミスの可能性があります。

- -

- -

式が期待される

- -

たとえば関数を呼び出すとき、末尾のカンマは許可されていません。

- -
for (let i = 0; i < 5,; ++i) {
-  console.log(i);
-}
-// SyntaxError: expected expression, got ')'
-
- -

正しくは、カンマを省略するか、他の式を追加するかしてください。

- -
for (let i = 0; i < 5; ++i) {
-  console.log(i);
-}
-
- -

括弧の不足

- -

時々、 if 文を囲む括弧を忘れることがあります。

- -
function round(n, upperBound, lowerBound){
-  if(n > upperBound) || (n < lowerBound){
-    throw 'Number ' + String(n) + ' is more than ' + String(upperBound) + ' or less than ' + String(lowerBound);
-  }else if(n < ((upperBound + lowerBound)/2)){
-    return lowerBound;
-  }else{
-    return upperBound;
-  }
-} // SyntaxError: expected expression, got '||'
- -

最初は括弧が正しく見えますが、 || が括弧の外にあることに注意してください。 || の周囲を括弧で囲むように修正してください。

- -
function round(n, upperBound, lowerBound){
-  if((n > upperBound) || (n < lowerBound)){
-    throw 'Number ' + String(n) + ' is more than ' + String(upperBound) + ' or less than ' + String(lowerBound);
-  }else if(n < ((upperBound + lowerBound)/2)){
-    return lowerBound;
-  }else{
-    return upperBound;
-  }
-}
-
- -

関連情報

- -
    -
  • {{jsxref("SyntaxError")}}
  • -
+--- +title: 'SyntaxError: Unexpected token' +slug: Web/JavaScript/Reference/Errors/Unexpected_token +tags: +- Error +- Errors +- JavaScript +- SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Unexpected_token +--- +
{{jsSidebar("Errors")}}
+ +

JavaScript の例外 "unexpected token" は、特定の言語構造が期待されているのに、それ以外のものが提供されている場合に発生します。単純なタイプミスかもしれません。

+ +

エラーメッセージ

+ +
SyntaxError: expected expression, got "x"
+SyntaxError: expected property name, got "x"
+SyntaxError: expected target, got "x"
+SyntaxError: expected rest argument name, got "x"
+SyntaxError: expected closing parenthesis, got "x"
+SyntaxError: expected '=>' after argument list, got "x"
+
+ +

エラーの種類

+ +

{{jsxref("SyntaxError")}}

+ +

エラーの原因

+ +

特定の言語構造が予想されている箇所に、ほかのものが提供されています。これは単純なタイプミスの可能性があります。

+ +

+ +

式が期待される

+ +

たとえば関数を呼び出すとき、末尾のカンマは許可されていません。

+ +
for (let i = 0; i < 5,; ++i) {
+  console.log(i);
+}
+// SyntaxError: expected expression, got ')'
+
+ +

正しくは、カンマを省略するか、他の式を追加するかしてください。

+ +
for (let i = 0; i < 5; ++i) {
+  console.log(i);
+}
+
+ +

括弧の不足

+ +

時々、 if 文を囲む括弧を忘れることがあります。

+ +
function round(n, upperBound, lowerBound){
+  if(n > upperBound) || (n < lowerBound){
+    throw 'Number ' + String(n) + ' is more than ' + String(upperBound) + ' or less than ' + String(lowerBound);
+  }else if(n < ((upperBound + lowerBound)/2)){
+    return lowerBound;
+  }else{
+    return upperBound;
+  }
+} // SyntaxError: expected expression, got '||'
+ +

最初は括弧が正しく見えますが、 || が括弧の外にあることに注意してください。 || の周囲を括弧で囲むように修正してください。

+ +
function round(n, upperBound, lowerBound){
+  if((n > upperBound) || (n < lowerBound)){
+    throw 'Number ' + String(n) + ' is more than ' + String(upperBound) + ' or less than ' + String(lowerBound);
+  }else if(n < ((upperBound + lowerBound)/2)){
+    return lowerBound;
+  }else{
+    return upperBound;
+  }
+}
+
+ +

関連情報

+ +
    +
  • {{jsxref("SyntaxError")}}
  • +
diff --git a/files/ja/web/javascript/reference/errors/unexpected_type/index.html b/files/ja/web/javascript/reference/errors/unexpected_type/index.html index bf43a41039..3ff329c689 100644 --- a/files/ja/web/javascript/reference/errors/unexpected_type/index.html +++ b/files/ja/web/javascript/reference/errors/unexpected_type/index.html @@ -1,77 +1,76 @@ ---- -title: 'TypeError: "x" is (not) "y"' -slug: Web/JavaScript/Reference/Errors/Unexpected_type -tags: - - Error - - Errors - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Unexpected_type ---- -
{{jsSidebar("Errors")}}
- -

JavaScript の例外 "x is (not) y" は、予期しない型があったときに発生します。よくあるのは、予期せず {{jsxref("undefined")}} または {{jsxref("null")}} の値があった場合です。

- -

メッセージ

- -
TypeError: Unable to get property {x} of undefined or null reference (Edge)
-TypeError: "x" is (not) "y" (Firefox)
-
-例:
-TypeError: "x" is undefined
-TypeError: "x" is null
-TypeError: "undefined" is not an object
-TypeError: "x" is not an object or null
-TypeError: "x" is not a symbol
-
- -

エラー種別

- -

{{jsxref("TypeError")}}。

- -

エラーの原因

- -

予期しない型がありました。これは {{jsxref("undefined")}} または {{jsxref("null")}} の値でしばしば発生します。

- -

また、{{jsxref("Object.create()")}} や {{jsxref("Symbol.keyFor()")}} のようなある種のメソッドは、特定の型を要求し、それを提供する必要があります。

- -

- -

無効な場合

- -
// undefined と null の場合、substring メソッドは動作しません。
-var foo = undefined;
-foo.substring(1); // TypeError: foo is undefined
-
-var foo = null;
-foo.substring(1); // TypeError: foo is null
-
-
-// ある種のメソッドでは、特定の型が求められることがあります。
-var foo = {}
-Symbol.keyFor(foo); // TypeError: foo is not a symbol
-
-var foo = 'bar'
-Object.create(foo); // TypeError: "foo" is not an object or null
-
- -

問題の修正

- -

null ポインターを undefined 値に修正するには、次のように typeof 演算子を用いて行うことができます。

- -
if (foo !== undefined) {
-  // これで、 foo が定義されていることがわかるので、実行することができます。
-}
-
-if (typeof foo !== 'undefined') {
-  // 同じというのは良い考えですが、この実装を使わないでください。 - 本当の
-  // undefined の値と未宣言の変数が混同されて問題が発生する可能性があります。
-}
-
- -

関連情報

- -
    -
  • {{jsxref("undefined")}}
  • -
  • {{jsxref("null")}}
  • -
+--- +title: 'TypeError: "x" is (not) "y"' +slug: Web/JavaScript/Reference/Errors/Unexpected_type +tags: +- Error +- Errors +- JavaScript +- TypeError +translation_of: Web/JavaScript/Reference/Errors/Unexpected_type +--- +
{{jsSidebar("Errors")}}
+ +

JavaScript の例外 "x is (not) y" は、予期しない型があったときに発生します。よくあるのは、予期せず {{jsxref("undefined")}} または {{jsxref("null")}} の値があった場合です。

+ +

エラーメッセージ

+ +
TypeError: Unable to get property {x} of undefined or null reference (Edge)
+TypeError: "x" is (not) "y" (Firefox)
+
+例:
+TypeError: "x" is undefined
+TypeError: "x" is null
+TypeError: "undefined" is not an object
+TypeError: "x" is not an object or null
+TypeError: "x" is not a symbol
+
+ +

エラーの種類

+ +

{{jsxref("TypeError")}}

+ +

エラーの原因

+ +

予期しない型がありました。これは {{jsxref("undefined")}} または {{jsxref("null")}} の値でしばしば発生します。

+ +

また、{{jsxref("Object.create()")}} や {{jsxref("Symbol.keyFor()")}} のようなある種のメソッドは、特定の型を要求し、それを提供する必要があります。

+ +

+ +

無効な場合

+ +
// undefined と null の場合、substring メソッドは動作しません。
+var foo = undefined;
+foo.substring(1); // TypeError: foo is undefined
+
+var foo = null;
+foo.substring(1); // TypeError: foo is null
+
+// ある種のメソッドでは、特定の型が求められることがあります。
+var foo = {}
+Symbol.keyFor(foo); // TypeError: foo is not a symbol
+
+var foo = 'bar'
+Object.create(foo); // TypeError: "foo" is not an object or null
+
+ +

問題の修正

+ +

null ポインターを undefined 値に修正するには、次のように typeof 演算子を用いて行うことができます。

+ +
if (foo !== undefined) {
+  // これで、 foo が定義されていることがわかるので、実行することができます。
+}
+
+if (typeof foo !== 'undefined') {
+  // 同じというのは良い考えですが、この実装を使わないでください。 - 本当の
+  // undefined の値と未宣言の変数が混同されて問題が発生する可能性があります。
+}
+
+ +

関連情報

+ +
    +
  • {{jsxref("undefined")}}
  • +
  • {{jsxref("null")}}
  • +
diff --git a/files/ja/web/javascript/reference/errors/unnamed_function_statement/index.html b/files/ja/web/javascript/reference/errors/unnamed_function_statement/index.html index 35abd0a3f6..4bdef90636 100644 --- a/files/ja/web/javascript/reference/errors/unnamed_function_statement/index.html +++ b/files/ja/web/javascript/reference/errors/unnamed_function_statement/index.html @@ -2,33 +2,36 @@ title: 'SyntaxError: function statement requires a name' slug: Web/JavaScript/Reference/Errors/Unnamed_function_statement tags: - - Error - - Errors - - JavaScript - - SyntaxError +- Error +- Errors +- JavaScript +- SyntaxError translation_of: Web/JavaScript/Reference/Errors/Unnamed_function_statement ---
{{jsSidebar("Errors")}}
-

メッセージ

+

JavaScript の例外 "function statement requires a name" は、名前が必要な関数文がコードの中にあった場合に発生します。

-
SyntaxError: function statement requires a name [Firefox]
+

エラーメッセージ

+ +
Syntax Error: Expected identifier (Edge)
+SyntaxError: function statement requires a name [Firefox]
 SyntaxError: Unexpected token ( [Chrome]
 
-

エラータイプ

+

エラーの種類

{{jsxref("SyntaxError")}}

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

-

コードに名前が必要な function ステートメントがあります。関数がどのように定義されているか、関数の名前を指定する必要があるかどうか、または問題の関数が関数式、{{Glossary("IIFE")}} である必要があるかどうか、 コードがこのコンテクストに正しく置かれているかどうかを確認する必要があります。

+

コードに名前が必要な関数文があります。関数がどのように定義されているか、関数の名前を指定する必要があるかどうか、または問題の関数が関数式、IIFE である必要があるかどうか、 コードがこのコンテクストに正しく置かれているかどうかを確認する必要があります。

-

ステートメント vs 式

+

文と式

-

function ステートメント (または function 宣言) では名前が必要であり、これは動作しません:

+

function 文 (または function 宣言) では名前が必要であり、次のものは動作しません。

function () {
   return 'Hello world';
@@ -36,19 +39,19 @@ SyntaxError: Unexpected token ( [Chrome]
 // SyntaxError: function statement requires a name
 
-

代わりに、function 式 (代入) を使用できます:

+

代わりに、function 式 (代入) を使用することができます。

var greet = function() {
   return 'Hello world';
 };
-

または、定義するとすぐに実行される IIFE (即時実行関数式) を定義しようとしているのかもしれません。その場合は、もう少々括弧が必要です:

+

または、定義するとすぐに実行される IIFE (即時実行関数式) を定義しようとしているのかもしれません。その場合は、もう少々括弧が必要です。

(function () {
 
 })();
-

ラベル付けされた関数

+

ラベル付けされた関数

関数 label を使用している場合、function キーワードの後に関数名を指定する必要があります。これは動作しません:

@@ -60,7 +63,7 @@ SyntaxError: Unexpected token ( [Chrome] // SyntaxError: function statement requires a name
-

たとえば、これは動作します:

+

たとえば、これは動作します。

function Greeter() {
   german: function g() {
@@ -68,7 +71,7 @@ SyntaxError: Unexpected token ( [Chrome]
   }
 }
-

オブジェクトのメソッド

+

オブジェクトのメソッド

オブジェクトのメソッドを作るならば、オブジェクトを作る必要があります。その場合、function キーワードの後に名前がない次の構文は有効です。

@@ -78,7 +81,7 @@ SyntaxError: Unexpected token ( [Chrome] } };
-

コールバック構文

+

コールバック構文

コールバックを使用するときの構文もチェックします。大括弧とカンマが混同しやすいです。

@@ -92,7 +95,7 @@ SyntaxError: Unexpected token ( [Chrome] // SyntaxError: function statement requires a name
-

正しくは:

+

正しくは、次の通りです。

promise.then(
   function() {
@@ -107,9 +110,9 @@ SyntaxError: Unexpected token ( [Chrome]
 

関連項目

diff --git a/files/ja/web/javascript/reference/errors/unterminated_string_literal/index.html b/files/ja/web/javascript/reference/errors/unterminated_string_literal/index.html index be1022bda4..ab19a0f4a8 100644 --- a/files/ja/web/javascript/reference/errors/unterminated_string_literal/index.html +++ b/files/ja/web/javascript/reference/errors/unterminated_string_literal/index.html @@ -1,67 +1,71 @@ ---- -title: 'SyntaxError: unterminated string literal' -slug: Web/JavaScript/Reference/Errors/Unterminated_string_literal -tags: - - Errors - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Unterminated_string_literal ---- -
{{jsSidebar("Errors")}}
- -

メッセージ

- -
SyntaxError: unterminated string literal
-
- -

エラータイプ

- -

{{jsxref("SyntaxError")}}

- -

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

- -

どこかに終端されていない {{jsxref("String")}} があります。文字列リテラルは、シングル(')かダブル(")のクオートで囲む必要があります。JavaScript は、シングルクオート文字列とダブルクオート文字列を区別しません。エスケープシーケンス はシングルクオートとダブルクオート、どちらの文字列でも動作します。このエラーを修正するためには、次の点をチェックしてください:

- -
    -
  • 文字列リテラルのために、クオート(シングルかダブル)の開始と終了を行っている。
  • -
  • 文字列リテラルを正しくエスケープしている。
  • -
  • 文字列リテラルが複数行に分けられていない。
  • -
- -

- -

複数行

- -

JavaScript では、次のように複数行にまたがる文字列を分割できません:

- -
var longString = 'This is a very long string which needs
-                  to wrap across multiple lines because
-                  otherwise my code is unreadable.';
-// SyntaxError: unterminated string literal
- -

替わりに、+ 演算子 かバックスラッシュ、template literal を使用します。+ 演算子だと、次のようになります:

- -
var longString = 'This is a very long string which needs ' +
-                 'to wrap across multiple lines because ' +
-                 'otherwise my code is unreadable.';
-
- -

または、文字列が次のように続くことを示すために、各行の終わりにバックスラッシュ文字("\")を使用することもできます。バックスラッシュの後に、(改行を除いて)スペースや文字、インデントを入れないようにしてください。そうしないと動作しません。バックスラッシュの場合、次のようになります:

- -
var longString = 'This is a very long string which needs \
-to wrap across multiple lines because \
-otherwise my code is unreadable.';
-
- -

ECMAScript 2015 環境でサポートされている template literal を使っても改行可能です。

- -
var longString = `This is a very long string which needs
-                  to wrap across multiple lines because
-                  otherwise my code is unreadable.`;
- -

関連情報

- - +--- +title: 'SyntaxError: unterminated string literal' +slug: Web/JavaScript/Reference/Errors/Unterminated_string_literal +tags: + - Error + - Errors + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Unterminated_string_literal +--- +
{{jsSidebar("Errors")}}
+ +

JavaScript のエラー "unterminated string literal" は、どこかに終了していない文字列リテラルがあった場合に発生します。文字列リテラルは単一引用符 (') または二重引用符 (") で囲む必要があります。

+ +

エラーメッセージ

+ +
SyntaxError: Unterminated string constant (Edge)
+SyntaxError: unterminated string literal (Firefox)
+
+ +

エラーの種類

+ +

{{jsxref("SyntaxError")}}

+ +

エラーの原因

+ +

どこかに終端されていない文字列リテラルがあります。文字列リテラルは単一引用符 (') または二重引用符 (") で囲む必要があります。JavaScript は、単一引用符の文字列と二重引用符の文字列を区別しません。エスケープシーケンス は単一引用符と二重引用符、どちらの文字列でも動作します。このエラーを修正するためには、次の点をチェックしてください。

+ +
    +
  • 文字列リテラルのために、単一引用符または二重引用符の開始と終了を行っている。
  • +
  • 文字列リテラルを正しくエスケープしている。
  • +
  • 文字列リテラルが複数行に分けられていない。
  • +
+ +

+ +

複数行

+ +

JavaScript では、次のように複数行にまたがる文字列を分割できません。

+ +
var longString = 'This is a very long string which needs
+                  to wrap across multiple lines because
+                  otherwise my code is unreadable.';
+// SyntaxError: unterminated string literal
+ +

代わりに、+ 演算子 かバックスラッシュ、テンプレートリテラル を使用します。+ 演算子の場合、次のようになります。

+ +
var longString = 'This is a very long string which needs ' +
+                 'to wrap across multiple lines because ' +
+                 'otherwise my code is unreadable.';
+
+ +

または、文字列が次のように続くことを示すために、各行の終わりにバックスラッシュ文字("\")を使用することもできます。バックスラッシュの後に、 (改行を除いて) スペースや文字、インデントを入れないようにしてください。そうしないと動作しません。バックスラッシュの場合、次のようになります。

+ +
var longString = 'This is a very long string which needs \
+to wrap across multiple lines because \
+otherwise my code is unreadable.';
+
+ +

ECMAScript 2015 環境でサポートされているテンプレートリテラルを使っても改行可能です。

+ +
var longString = `This is a very long string which needs
+                  to wrap across multiple lines because
+                  otherwise my code is unreadable.`;
+ +

関連情報

+ + diff --git a/files/ja/web/javascript/reference/errors/var_hides_argument/index.html b/files/ja/web/javascript/reference/errors/var_hides_argument/index.html index 8653e6da87..a189e60963 100644 --- a/files/ja/web/javascript/reference/errors/var_hides_argument/index.html +++ b/files/ja/web/javascript/reference/errors/var_hides_argument/index.html @@ -2,26 +2,29 @@ title: 'TypeError: variable "x" redeclares argument' slug: Web/JavaScript/Reference/Errors/Var_hides_argument tags: - - Errors - - JavaScript - - Strict Mode - - TypeError +- Error +- Errors +- JavaScript +- Strict Mode +- TypeError translation_of: Web/JavaScript/Reference/Errors/Var_hides_argument ---
{{jsSidebar("Errors")}}
-

メッセージ

+

JavaScript の strict モード固有の例外 "variable redeclares argument" は、関数の引数で使用された名前が、関数の本体で var の代入を使用して再宣言された場合に発生します。

-
TypeError: variable "x" redeclares argument (Firefox)
+

エラーメッセージ

+ +
TypeError: variable "x" redeclares argument (Firefox)
 
-

エラータイプ

+

エラーの種類

strict モード でのみ、{{jsxref("TypeError")}} の警告がでます。

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

-

関数のパラメータとして使用されたものと同じ変数名が、関数のボディ内で var 割り当てを使用して再宣言されています。これは命名が競合する可能性があるため、JavaScript が警告を発します。

+

関数の引数として使用されたものと同じ変数名が、関数の本体で var の代入を使用して再宣言されています。これは命名が競合する可能性があるため、JavaScript が警告を発します。

このエラーは、strict モードのコード でのみ発生します。非 strict モードでは、再宣言は暗黙裡に無視されます。

@@ -31,21 +34,21 @@ translation_of: Web/JavaScript/Reference/Errors/Var_hides_argument

このケースでは、変数 "arg" 引数を再宣言しています。

-
"use strict";
+
'use strict';
 
 function f(arg) {
-  var arg = "foo";
+  var arg = 'foo';
 }
 
-

有効なケース

+

有効な場合

-

var ステートメントを省略するだけで、この警告を修正できます。なぜなら、変数はすでに存在しているからです。そのほかの方法として、関数のパラメータか変数名をリネームすることもできます。

+

var 文を省略するだけで、この警告を修正できます。なぜなら、変数はすでに存在しているからです。そのほかの方法として、関数の引数または変数名の名前を変更することでも対応できます。

-
"use strict";
+
'use strict';
 
 function f(arg) {
-  arg = "foo";
+  arg = 'foo';
 }
 
-- cgit v1.2.3-54-g00ecf