ES6 交替 While 循环

ES6 Alternate While Loop

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

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

在这种情况下,act() 旨在改变 cond 的最终结果,直到 cond 被评估为 false,然后循环是意味着结束...

我尝试通过使用我的代码单步执行字符串来确定字符串的长度来对此进行测试。结果,我的代码如下:

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

现在,我的想法是,这段代码基本上会遍历并测试字符串中每个字符的存在,递增 len 直到它尝试 "qwe"[6],即 undefined ,而!!undefined的返回值渲染为false,退出循环,len的值等于6...

然而,我什至没有走那么远...由于某种原因,这个循环继续进行,并放弃 InternalError: too much recursion

的错误

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

在实际调用 _while 之前计算表达式 !!("qwerty")[len])。那时len就是0,所以表达式的结果会是true.

要解决此问题,您可以要求 cond 成为一个函数,就像 act 一样。这样,您可以每次通过循环评估条件。我想它看起来像这样(虽然我不 JavaScript 精明):

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

给定的例子将变成

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