JavaScript エンジンが実行できる再帰呼び出しの数について知りたいですか?
再帰呼び出しの数
次の関数を使用すると、答えを見つけることができます: (Ben Alman の要点からインスピレーションを受けています)
3 つの結果:
これらの数字は何を表していますか? Aleph 氏は、V8 では再帰呼び出しの数はスタックのサイズとスタック フレーム (パラメータを保持するローカル変数) のサイズの 2 つの量に依存すると指摘しました。これを確認するには、computeMaxCallStackSize() にローカル変数を追加します。これにより、低い値が返されます。
ECMAScript 6 での末尾呼び出しの最適化
ES6 には末尾呼び出しの最適化があります。関数の最後のステップも関数呼び出しである場合、サブ関数を通じて呼び出されるのではなく、「スキップ」されます。これは、ES6 (厳密モード) では、computeMaxCallStackSize 関数を少し変更するだけで、永久に実行できることを意味します。