gpt4 book ai didi

javascript - ES6 备用 While 循环

转载 作者:行者123 更新时间:2023-12-02 15:55:35 26 4
gpt4 key购买 nike

我正在开发以下代码,一个备用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com