原生JavaScript中该段嵌套for循环是如何运行得到结果25的?
嵌套循环执行过程解析
原始代码
let sum = 0; for (let i = 0; i < 5; i++) { for (let j = 0; j < 2; j++) { sum = sum + i + j; continue; } } console.log(sum);
循环范围说明
- 外层
i循环的判断条件为i < 5,所以i的取值为0、1、2、3、4,共执行5次 - 内层
j循环的判断条件为j < 2,所以每个i对应的j取值为0、1,每个i对应内层循环执行2次 - 代码里的
continue语句不影响执行逻辑,因为它已经是内层循环的最后一行语句,执行后本来就会进入下一轮循环,没有跳过任何计算逻辑
逐轮累加推演
我们按循环执行顺序计算sum的变化:
- i=0时
- j=0:sum = 0 + 0 + 0 = 0
- j=1:sum = 0 + 0 + 1 = 1
- i=1时
- j=0:sum = 1 + 1 + 0 = 2
- j=1:sum = 2 + 1 + 1 = 4
- i=2时
- j=0:sum = 4 + 2 + 0 = 6
- j=1:sum = 6 + 2 + 1 = 9
- i=3时
- j=0:sum = 9 + 3 + 0 = 12
- j=1:sum = 12 + 3 + 1 = 16
- i=4时
- j=0:sum = 16 + 4 + 0 = 20
- j=1:sum = 20 + 4 + 1 = 25
最终console.log(sum)输出的结果就是25,你之前推演得到15或16大概率是漏算部分循环轮次,或是累加时计算错误。
内容的提问来源于stack exchange,提问作者AstonJay
相关产品推荐
相关产品推荐

