javascript - ES6 备用 While 循环

标签 javascript recursion alternate

我正在开发以下代码,一个备用 while 循环:

_while = (cond, act) => cond && act() & _while(cond, act)

在这种情况下,act() 旨在每次迭代时更改 cond 的最终结果,直到 cond 计算为 false,则循环将结束...

我尝试通过使用我的代码逐步遍历字符串来确定字符串的长度来测试这一点。结果,我的代码如下:

长度= 0; _while(!!("qwerty")[len], ()=>++len);

现在,我的想法是,这段代码基本上将逐步执行并测试字符串中每个字符的存在,递增 len 直到它尝试 "qwe"[6]undefined!!undefined 返回值呈现为 false,退出循环, len 的值等于 6...

但是,我什至还没有做到这一点...由于某种原因,这个循环继续进行,并因 InternalError: Too much recursion

错误而放弃

任何人都可以看到我的代码做错了什么吗?我想尽可能保留原始代码,而不必求助于 native forwhile 循环...

最佳答案

表达式 !!("qwerty")[len]) 在实际调用 _while 之前进行计算。此时,len0,因此表达式的结果将为true

要解决此问题,您可以要求 cond 是一个函数,就像 act 一样。这样,您可以每次通过循环评估条件。我猜它看起来像这样(尽管我不懂 JavaScript):

_while = (cond, act) => cond() && act() & _while(cond, act)

给定的示例将变为

len = 0; _while(()=>!!("qwerty")[len], ()=>++len);

关于javascript - ES6 备用 While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575965/

相关文章:

javascript - 标题中的 jQuery 移动可折叠按钮,停止折叠/展开

javascript - react-router 链接调用 Redux Action

Java 递归传值

batch-file - 如何在命令提示符中仅显示具有备用数据流的文件

替代 YouTube 嵌入源的 JavaScript 函数? (无 iframe)

c# - 选择数组 C# 的替代项

javascript - 将 Bootstrap 按钮链接到网页时出现问题

javascript - 如何在每个浏览器(包括手机)中启用类型 =“date”

javascript - 重构用于遍历 DOM 的工作递归代码 (hasFiveDIV)

Node.js - 超出最大调用堆栈大小