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
相关产品推荐
相关产品推荐

