You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript生成0/1随机数组时for循环无限循环问题求助

问题修复方案

你的代码存在两个核心问题,直接导致了终端崩溃和结果异常:

1. for循环语法错误引发无限循环

原代码的for循环写法:

for (let i = 0; i < size, i += 1;)

循环条件部分错误使用了逗号而非分号。JavaScript的逗号运算符会取最后一个表达式的结果作为判断依据,i += 1的结果永远是大于0的真值,导致循环永远不会终止,持续向数组添加元素直至耗尽内存,最终引发终端崩溃。

正确的for循环结构应为for(初始化语句; 循环条件; 增量语句),修正后:

for (let i = 0; i < size; i += 1)

2. 未调用随机数生成函数导致值固定

原代码中:

const randomNumber = generateRandomNumber

只是将函数本身赋值给变量,并未执行函数获取随机值。无论是第三方库的随机函数,还是你模拟的Math.round(Math.random()),都必须通过()调用才能生成每次的随机结果,否则每次push的都是同一个函数引用(或固定值),最终得到全相同数字的数组。

修正为调用函数:

const randomNumber = generateRandomNumber();

修复后的完整代码

const answerSetter = {
  getZeroOnes(size, generateRandomNumber) {
    const zeroOnes = [];
    for (let i = 0; i < size; i += 1) {
      const randomNumber = generateRandomNumber();
      zeroOnes.push(randomNumber);
    }
    return zeroOnes;
  },
};

测试验证

用模拟的随机函数测试:

// 生成0/1的模拟随机函数
const mockRandom = () => Math.round(Math.random());
// 生成长度为5的随机数组
console.log(answerSetter.getZeroOnes(5, mockRandom));

此时会正常输出由0和1组成的随机数组,不会再出现崩溃或结果异常的问题。

内容的提问来源于stack exchange,提问作者ivdrwn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:20:33