为何指定-10边界的for循环仍输出近乎无限负数?
问题分析:为什么for循环会无限输出负数?
你遇到的问题出在循环条件的写法上:-10 < person < 10并不是你想表达的“person大于-10且小于10”,JavaScript不支持这种连续比较的语法。
这个表达式会被拆成两步计算:
- 第一步计算
-10 < person,得到布尔值true或false - 第二步把这个布尔值和10比较,布尔值在数值运算中会被转为数字:
true对应1,false对应0 - 不管是1还是0,都小于10,所以这个条件永远为
true,循环会一直执行person--,输出越来越小的负数,根本停不下来。
如果要实现“从2计数到-10”的预期,你需要用逻辑与运算符&&明确条件,或者直接保留下限判断即可,修正后的代码如下:
// 从2递减到-10,包含-10 for (var person = 2; person >= -10; person --) { console.log(person); }
如果要同时限制上下限(比如确保person小于10),可以写成:
for (var person = 2; person >= -10 && person < 10; person --) { console.log(person); }
内容的提问来源于stack exchange,提问作者adham elkady
相关产品推荐
相关产品推荐

