运行JS嵌套循环计算数组元素乘积时浏览器卡顿甚至崩溃是什么原因?
代码问题分析
- 语法错误:
Let是错误写法,JavaScript 中声明变量的关键字为小写的let,大写会触发未定义标识符报错。 - 死循环核心原因:内层 for 循环的迭代逻辑错误,你写的
j *= product中,product初始值为1,j初始值为0,0乘以任何数都为0,j永远满足j < arr[i].length的条件,循环永远不会终止,导致浏览器卡死。 - 循环体语法错误:内层for循环末尾多了一个分号,会被识别为循环体为空,就算迭代逻辑正常,后续的计算逻辑也不会被循环执行。
- 逻辑缺失:代码中没有写乘积计算的逻辑,哪怕循环能正常执行,最终返回的
product永远是初始值1,无法得到正确结果。
修正后代码
function multiplyAll(arr){ let product = 1; for(let i = 0; i < arr.length; i++){ for(let j = 0; j < arr[i].length; j++){ product *= arr[i][j]; } } return product; } multiplyAll([[1], [2], [3]]); // 运行返回结果为6
内容的提问来源于stack exchange,提问作者Emmanuel Amah
相关产品推荐
相关产品推荐

