ECMAScript 2015 言語仕様では、Function.prototype.apply
とのFunction.prototype.call
両方の定義にステップの 1 つとして「Perform PrepareForTailCall()」が含まれているため、これらの関数が適切なテール コール (つまり、テール コールの最適化) をサポートしていることがわかります。
ただし、バインドされた関数オブジェクトの [[Call]]の定義では、PrepareForTailCall() が省略されています。これは、バインドされた関数が適切な末尾の呼び出しをサポートしていないこと、およびバインドされた関数が自分自身を再帰的に呼び出すと、スタックが爆発する可能性があることを意味しますか?