js for循环不断循环无限[关闭]

Posted

技术标签:

【中文标题】js for循环不断循环无限[关闭]【英文标题】:js for loop keeps looping unlimitedly [closed] 【发布时间】:2020-04-26 00:02:24 【问题描述】:

我真的坚持这部分。首先,我成功收集了用户上传的summernote编辑器中的所有img源。但是当我尝试循环它们以检查 img 链接是否编码为 base64 并尝试解码它们并将它们保存在一起时。但是在我的代码中,fo循环一直在无限循环。 img标签的循环列表有问题吗?

function getAllImages() 
let images = $(".note-editable p").find('img').map(function() 
      return $(this).attr('src')
    ).get();
console.logt(images);
 let base64regex = /^([0-9a-zA-Z+/]4)*(([0-9a-zA-Z+/]2==)|([0-9a-zA-Z+/]3=))?$/;
 let imgSrc = [];
   for(let i=0; images.length; i++)
     if(base64regex.test(images[i])) 
        console.log("["+images[i]+"]");
        let decoded=atob(images[i]);
        console.log("img decoded");
        imgSrc.push(decoded);
      
     else if(base64regex.test(images[i]) == false)

        console.log("["+images[i]+"]");
        imgSrc.push(images[i]);
           
 
  return imgSrc;
 

【问题讨论】:

for(let i=0; images.length; i++) 应该是for(let i=0; i < images.length; i++) for(let i=0; images.length; i++) 你缺少一个终止条件,它应该是i < images.length 啊,非常感谢,为此我花了一整天的时间。有趣的是为什么 js 在那里没有显示任何错误? @AzizSirojiddinov - 因为没有错误。 for 循环中的测试表达式只是一个表达式。 images.length 是一个表达式。 :-) for 不要求表达式具体评估为 truefalse (这在某些情况下非常有用)。然后测试表达式的结果,看它是真的(= 循环应该继续)还是假的(它不应该)。如果images.length 是一个非 0 的数字,它是真实的,所以它会永远持续下去。 【参考方案1】:

请在 for 循环中使用i < images.length

function getAllImages() 
let images = $(".note-editable p").find('img').map(function() 
      return $(this).attr('src')
    ).get();
console.logt(images);
 let base64regex = /^([0-9a-zA-Z+/]4)*(([0-9a-zA-Z+/]2==)|([0-9a-zA-Z+/]3=))?$/;
 let imgSrc = [];
   for(let i=0; i < images.length; i++)
     if(base64regex.test(images[i])) 
        console.log("["+images[i]+"]");
        let decoded=atob(images[i]);
        console.log("img decoded");
        imgSrc.push(decoded);
      
     else if(base64regex.test(images[i]) == false)

        console.log("["+images[i]+"]");
        imgSrc.push(images[i]);
           
 
  return imgSrc;
 

【讨论】:

以上是关于js for循环不断循环无限[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

js for循环小记

无限循环与嵌套循环

如何打破 C 中的无限 for(;;) 循环?

“定义不明确的 for 循环 - 循环无限执行” (MSVC C6295)

C/C++ 中的无限循环 [关闭]

Python中可能有无限的for循环吗?