From c774cd7866e4835fdc31167aaf3c9fb5f441e5c8 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Thu, 17 Jun 2021 01:54:31 +0900 Subject: Web/JavaScript/Reference/Errors/Too_much_recursion を更新 (#1109) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 2021/04/28 時点の英語版に同期 --- .../reference/errors/too_much_recursion/index.html | 25 +++++++++++----------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/files/ja/web/javascript/reference/errors/too_much_recursion/index.html b/files/ja/web/javascript/reference/errors/too_much_recursion/index.html index d58ea41eb0..e5ec81c94c 100644 --- a/files/ja/web/javascript/reference/errors/too_much_recursion/index.html +++ b/files/ja/web/javascript/reference/errors/too_much_recursion/index.html @@ -10,24 +10,26 @@ translation_of: Web/JavaScript/Reference/Errors/Too_much_recursion ---
{{jsSidebar("Errors")}}
-

メッセージ

+

JavaScript の例外である "too much recursion" または "Maximum call stack size exceeded" は、関数の呼び出しが多すぎる場合や、関数に基礎ケースがない場合に発生します。

-
Error: Out of stack space (Edge)
+

メッセージ

+ +
Error: Out of stack space (Edge)
 InternalError: too much recursion (Firefox)
 RangeError: Maximum call stack size exceeded (Chrome)
 
-

エラーの種類

+

エラーの種類

{{jsxref("InternalError")}}。

-

エラーの原因

+

エラーの原因

自分自身を呼び出す関数は再帰関数と呼ばれます。ある条件を満たすと、関数は自分自身を呼び出すのをやめます。これは基礎ケースと呼ばれます。

-

いくつかの点で、再帰はループに似ています。両方とも、同じコードを複数回実行し、 (無限ループまたは無限再帰を避けるために) 条件を必要とします。関数の再帰呼び出しが深すぎる場合、または関数が基礎ケースを欠いている場合、 JavaScript はこのエラーを発生します。

+

いくつかの点で、再帰はループに似ています。両方とも、同じコードを複数回実行し、 (無限ループまたは無限再帰を避けるために) 条件を必要とします。関数の再帰呼び出しが深すぎる場合、または関数が基礎ケースを欠いている場合、 JavaScript はこのエラーを発生します。

-

+

終了条件に従って、この再帰関数は 10 回実行されます。

@@ -63,7 +65,7 @@ loop(0); // InternalError: too much recursion
-

Class error: too much recursion

+

Class error: too much recursion

class Person{
 	constructor(){}
@@ -72,7 +74,6 @@ loop(0);
 	}
 }
 
-
 const tony = new Person();
 tony.name = "Tonisha"; // InternalError: too much recursion
 
@@ -85,7 +86,7 @@ tony.name = "Tonisha"; // InternalError: too much recursion
-

この例では、セッターが呼び出されたとき、同じことを再度行うように指示されます。つまり、処理しているのと同じプロパティに設定します。これにより、関数は何度も何度も自分自身を呼び出し、無限に再帰が行われます。

+

この例では、セッターが呼び出されたとき、同じことを再度行うように指示されます。つまり、処理しているのと同じプロパティに設定します。これにより、関数は何度も何度も自分自身を呼び出し、無限に再帰が行われます。

この問題は同じ変数がゲッターに使用される場合にも発生します。

@@ -111,9 +112,9 @@ tony.name = "Tonisha"; console.log(tony); -

関連情報

+

関連情報

-- cgit v1.2.3-54-g00ecf