構文
- 矢印関数のように暗黙的に呼び出すか、明示的に呼び出すかのどちらかを返すだけで、末尾呼び出し文
- 関数foo(){リターンバー(); } // barの呼び出しは末尾呼び出しです
- 関数foo(){bar(); } // barはテールコールではありません。戻り値が与えられていない場合、この関数はundefinedを返します。
- const foo =()=> bar(); // bar()はテールコールです
- const foo =()=>(poo()、bar()); // pooはテールコールではなく、barはテールコールです
- const foo =()=> poo()&& bar(); // pooはテールコールではなく、barはテールコールです
- const foo =()=> bar()+ 1; //バーは+ 1を返すためにコンテキストを必要とするため、テールコールではありません
備考
TCOは、ES2015仕様で言及されているように、PTC(Proper Tail Call)としても知られています。
テールコールの最適化 関連する例