【问题标题】:After pasting the following code, my browser crashed. Why?粘贴以下代码后,我的浏览器崩溃了。为什么?
【发布时间】:2014-01-12 16:07:10
【问题描述】:

粘贴以下代码后,我的浏览器崩溃了。我完全不知道为什么。我是 Javascript 的新手。

这是我的代码:

var randarray = new Array();
var l = 0;
var flag;
var numofpost = 5;

function randomposts(json) {
    var total = parseInt(json.feed.openSearch$totalResults.$t, 10);
    for (i = 0; i < numofpost;) {
        flag = 0;
        randarray.length = numofpost;
        l = Math.floor(Math.random() * total);
        for (j in randarray) {
            if (l == randarray[j]) {
                flag = 1;
            }
        }
        if (flag == 0 && l != 0) {
            randarray[i++] = l;
        }
    }
    document.write('<ul class="rp-menu">');
    for (n in randarray) {
        var p = randarray[n];
        var entry = json.feed.entry[p - 1];
        for (k = 0; k < entry.link.length; k++) {
            if (entry.link[k].rel == 'alternate') {
                var item = "<li>" + "<a href=" + entry.link[k].href + ">" + entry.title.$t + "</a></li>";
                document.write(item);
            }
        }
    }
    document.write('</ul>');
}

【问题讨论】:

  • 欢迎来到 StackOverflow。请阅读关于如何提出好问题的常见问题解答。 “请解决这个问题并给我正确的代码”不是一个好问题,我们希望您调试您的代码,您解释出了什么问题,以及您尝试解决的问题。
  • 另外,在寻求代码方面的帮助时,请花时间将代码格式化为可读性。在“提问”页面上有很多的格式辅助工具。这次我已经通过jsbeautifier.org 为你运行了你的代码。
  • @T.J.Crowder:对不起,我在你之前开始编辑并在你之后发布,直到后来才意识到发生了什么。对不起:)
  • 如果您的意图是在一个数组的给定范围内保存多个唯一随机数,有更好的方法来做到这一点。我猜你的数组长度(numofpost)大于可能的数字范围(0-total),所以你用完了唯一的数字来放入数组,导致无限循环。
  • @monster 兄弟你好,我是 JavaScript 新手。您能否编辑我的所有代码并给我正确的代码,以便我可以在我的模板中使用。请兄弟给我正确的代码。

标签: javascript browser crash


【解决方案1】:

在您的第一个 for 循环中,i 的增量位于条件后面,因此如果它永远不会解析为 true,您将有一个无限循环

【讨论】:

  • @monster 你好兄弟,你能告诉我如何解决这个问题吗?我是 javascript 新手。
  • @Noxdo:它与 JavaScript 无关,它与逻辑有关。您的循环将一直持续到i 等于或大于numpost。如果在您从不递增(“添加到”)i 之前有任何循环迭代,则循环将永远重复。所以总是增加i
  • @Noxdo:你的条件是if (flag == 0 &amp;&amp; l != 0) {,这意味着i 增加的唯一方法是flag0 并且l 不是0。似乎当l被设置并在randarray中找到时,flag也被设置为相同的值,所以它们不会有相同的值。
猜你喜欢
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 2014-09-27
相关资源
最近更新 更多