私が開発している次のコード、代替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
私のコードで何が間違っているのか、誰にもわかりますか? for
ネイティブやwhile
ループに頼ることなく、元のコードでできることを維持したい...