While 循环的函数式编程替代方案
在函数式编程范例中,希望用更多函数式方法替换传统的 while 循环。然而,JavaScript 中缺乏尾部调用优化对这一努力提出了挑战。
模拟 while 循环的一种方法是创建一个实用函数:
<code class="javascript">function while(func, test, data) { const newData = func(data); if (test(newData)) { return newData; } else { return while(func, test, newData); } }</code>
但是,作为代码表明,如果没有尾部调用优化,这种方法并不是最佳的。带有手动数据复制的修改版本可以缓解该问题:
<code class="javascript">function while(func, test, data) { let newData = *copy the data somehow* while(test(newData)) { newData = func(newData); } return newData; }</code>
尽管提供了纯度,但此方法引入了不必要的复杂性。
另一种方法是使用生成器函数和实用函数,例如 find 或减少,但找到一个可读的实现仍然具有挑战性。
最终,如果在函数式编程上下文中需要 while 循环,则最佳策略取决于应用程序的特定需求。在某些情况下,使用常规 while 循环并确保纯度可能是可以接受的,而在其他情况下,像 while 这样的实用函数可能是合适的。
以上是如何在没有尾部调用优化的情况下替换函数式 JavaScript 中的 While 循环?的详细内容。更多信息请关注PHP中文网其他相关文章!