for (var i = 0, j = 0; j < 5, i < 3; i++, j++) {}console.log(i * j) // 9换下位置以后for (var i = 0, j = 0; i < 3, j < 5; i++, j++) {}console.log(i * j) // 25
1 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
for规范中规定 for
语句的定义如下:
for ([initialization]; [condition]; [final-expression])
statement
for 循环继续与否取决于 condition === true
如果你在 condition 处写了 i < 3, j < 5 这种语句,这里的,属于逗号操作符。
逗号操作符的效果是对它的每个操作数求值(从左到右),并返回最后一个操作数的值。
因此,题目中两种情况下,在 i = 3, j = 3 的情况下:
console.log(j < 5, i < 3) //false
console.log(i < 3, j < 5) //true
因此第一种情况下,循环只跑到了 i = 3, j = 3;
在第二种情况下,循环即使到了 i = 3, j = 3,由于 (i < 3, j < 5) === true ,for会继续为 i累积,直到 j == 5,此时 i = 5, j = 5
添加回答
举报
0/150
提交
取消