如何用while循环替代for循环重写JavaScript程序?含3的幂示例
1. 用while循环替代for循环的通用方法
其实for循环和while循环本质上可以互相转换,核心是拆解for循环的三个组成部分:
for循环的标准结构是:
for (初始化语句; 循环条件; 迭代更新语句) { // 循环体代码 }
转换成while循环只需要把这三个部分拆分到对应位置:
- 把初始化语句移到while循环外面(只执行一次)
- 把循环条件放到while的括号里
- 把迭代更新语句放到while循环体的最后(每次循环结束后执行)
举个简单例子,比如遍历0到4的for循环:
for (let i = 0; i < 5; i++) { console.log(i); }
转换成while循环就是:
let i = 0; // 初始化移到外部 while (i < 5) { // 循环条件 console.log(i); // 原循环体代码 i++; // 迭代更新放到循环体末尾 }
两者执行逻辑完全一致,只是写法不同而已。
2. 打印10000以内3的幂:for转while的具体实现
你写的for循环逻辑是对的,转换成while循环其实很直接,按上面的方法拆分就行。先看你的原代码:
for (var x = 3; x < 10000; x = x * 3) { alert(x); }
我们把它拆成三个部分:
- 初始化:
var x = 3→ 移到while外面 - 循环条件:
x < 10000→ 放到while括号里 - 迭代更新:
x = x * 3→ 放到循环体的最后
所以转换后的while循环代码就是:
var x = 3; // 循环前完成初始化,和for里的初始化完全一致 while (x < 10000) { // 循环条件不变 alert(x); // 原循环体的逻辑 x = x * 3; // 必须放在循环体里,每次执行完alert后更新x的值,否则会陷入死循环 }
这里要注意:如果忘记把x = x * 3放到循环体里,x的值会一直是3,永远满足x < 10000的条件,导致无限循环——这应该就是你卡壳的点啦!现在这样写就和原for循环的执行结果完全一样了。
内容的提问来源于stack exchange,提问作者elitecoreyy
相关产品推荐
相关产品推荐

