for 和 while
其实 for
和 while
最大的差异在于「是否知道要跑几次」,在写 for
迴圈时,我们必须在一开始就设定好条件和变数变化;而 while
中只需要写迴圈的条件。所以当我们不知道需要执行几次时,就可以使用 while 迴圈
配合 if-else
条件判断,例如当我们需要抢高铁票时可以这样写:
let haveTicket = false; // 预设没有票while(haveTicket == false) { // 当没有票时会不断尝试抢票 // 执行抢票 if (有票) { haveTicket = true; // 当买到票时将变数改为 true,停止迴圈 }}
或我们也可以使用 while
进行数学运算,例如算出 1 + n 加到多少时最靠近 100:
let sum = 0;let count = 0;while (sum+count <= 100) { // 条件为目前总和 + 变数小于 100 count++; // 初始变数为 0,所以先 + 1 sum += count; // 将变数加到总合中}console.log(sum); // 最后总和为 91console.log(count); // count 为 14,但加了 14 后会超过 100,所以最终答案为 13
while 结合 break
之前在介绍 switch
条件判断时我们有说到 break
可以用来跳出该区块,而在 while
中也同样能够使用 break
去结束迴圈。
範例:
从 1 加到 n,直到超过 100
let sum = 0; // 预设总和为 0let num = 1; // 从 1 开始跑迴圈while (true) { // 先将条件设定为 true,会不断跑迴圈 if (sum < 100) { sum += num; num++; } else { break; }}console.log(sum);console.log(num);
for 结合 if-else 判断
範例:判断某数是否为质数
使用prompt()
让使用者输入数字,并判断是否为质数质数的定义为大于 1 且只能被 1 和该数本身整除的数字let input = prompt("请输入入字");if (input > 1) { // 判断是否质数,需要将该数字与 2 到 (该数字-1) 运算一遍看看是否整除,若都不整除则此数为质数 // 在跑迴圈时需要先设一个变数来存取是不是质数 let output = true; // 预设是质数 for (let i = 2; i < input; i++) { if (input % i == 0) { // input % i == 0 成立代表它可以被某数整除,代表它不是质数 output = false; // 不是质数,改变变数的值 break; // 只要有一个数可以被整除就不是质数了,所以可以直接跳出迴圈不用检查其他的 } }; // 跑完迴圈后可以检查变数 output 的值,若为 true 表示为质数 if (output == true) { alert("是质数"); } else { alert("不是质数"); }}else { alert("小于 1 没办法判断啦");}
上一篇:[快速入门前端 46] JavaScript:迴圈 (1) for 、while、do while 简介
下一篇:[快速入门前端 48] JavaScript:迴圈 (3) 双重迴圈
系列文章列表:[快速入门前端] 系列文章索引列表