2回目の呼び出しが最大10倍遅くなる可能性があるため、JavaScriptで関数を再帰的に呼び出すときに軽く踏んでください。JavaScriptでの再帰関数の呼び出し
一つの重要な問題があります:ほとんどのJavaScriptの実装では、この第二のバージョンは、最初のものよりも約10倍遅いです。 JavaScriptでは、単純なループを実行することは、関数を複数回呼び出すよりもずっと安価です。
John Resigもこれがthis投稿の問題です。
私の質問です:再帰を使うのはなぜそれほど効率が悪いのですか?特定のエンジンが構築された方法ですか? JavaScriptでこれが当てはまらない時がありますか?
私はそれがスコープのものだと推測しています:P大きな質問、私は彼らが何を答えているのが不思議です! – Pelshoff
関数呼び出しのオーバーヘッドはループ制御のオーバーヘッドよりも単純です。これはまさにあらゆるプログラミング言語に当てはまります。新しいスコープの割り当てと初期化、戻りアドレスの保存、パラメータの整列化など、関数を呼び出すときに行うべきより多くの簿記があります.JavaScriptインタープリタは非常に速いペースで高速化しています。 (または本)に質問する必要があります。 – Pointy
"2回目の呼び出しが最大10倍遅くなる可能性があるため"これはテキストの内容とは異なります。コードの2番目のバージョンは10倍遅いと言われています。 –