前面学习到了条件判断式,接着我们来学习有点危险的循环回圈,好啦!也没那麽夸张~只是写不好,容易进入无穷回圈导致当机!不过我们是写在网页上~所以如果真的不小心陷入无穷回圈,就关掉浏览器就可以了!
如同字面上的意思,一直反覆轮回,重复做一样的事(怎麽好像人生)。
没错!回圈也有流程图,但其实也跟判断流程图相差不远,几乎一模一样
同样是要达成所设定的条件来进行循环,是不是跟条件判断式很像呀!
while 回圈是个最基本、结构简单的回圈,使用的语法 while ( 条件表达式 ) { 当条件表达式为 true 时,执行程序码 }
。
假设我们要印出 12 个月份,除了乖乖的打出 12 个月份,我们也可以发挥工程师精神,使用回圈来帮我们代劳:
let month = 1; /* 一年由 1 月开始 */
while (month <= 12 /* 一年只有 12 个月,超过就终止 */) {
console.log( `${month} 月` ); // 利用前面所学的样板字面值,带入变数
month++; // 重点:需要每执行一次自动 + 1,否则会陷入无限回圈
}
/*
"1 月"
"2 月"
"3 月"
"4 月"
"5 月"
"6 月"
"7 月"
"8 月"
"9 月"
"10 月"
"11 月"
"12 月"
*/
非常简单吧~
而 do while 跟 while 非常相似,唯一不同的地方就在於,JavaScript 是由上而下执行程序码,所以会先执行一次!
let month = 1; /* 一年由 1 月开始 */
do {
// 不管有没有符合条件,都会先执行"一次"这段程序码
console.log( `${month} 月` );
month++; // 重点记得加
} while (month <= 12) // 一年不超过 12 个月
/*
"1 月"
"2 月"
"3 月"
"4 月"
"5 月"
"6 月"
"7 月"
"8 月"
"9 月"
"10 月"
"11 月"
"12 月"
*/
for 回圈比较严谨,它把设定初始值、条件判断 与 更新值 集中在一起设定,让回圈的操控次数更容易掌控。
for 回圈的语法 for (初始化表达式; 条件表达式; 更新表达式) { 条件判断为 true 执行程序码 }
同样用上面 12 个月的例子:
/* 同样设定初始值 1 月; 不超过 12 个月; 每执行一次 + 1 */
for (let i = 1; i <= 12; i++) {
console.log( `${i} 月` );
}
/*
"1 月"
"2 月"
"3 月"
"4 月"
"5 月"
"6 月"
"7 月"
"8 月"
"9 月"
"10 月"
"11 月"
"12 月"
*/
有没有发现更简单了!
大多数人会喜欢使用 let i
来初始化元素,是因为 let
是区块变数,不会污染到外面的变数,而 i
是 index
的缩写,当然你变数名取别的也无所谓就是了!
有时候我们并不想让回圈直接执行到底,想要跳过几个选项,或到哪个选项直接停止,就可以利用 break (中断语法)与 continue (跳过语法),只能使用在循环语法中。
是不是很熟悉~没错!就是前面 switch 中的 break
语法,switch 也可以搭配 continue
进行跳过。
break
用法应该都知道了,这里就介绍 continue
吧~
使用方法也很简单,假如我想在印出 9 月有几天红字:
let holiday = 0; // 统计假日
/* 同样设定初始值 1 日; 9 月不超过 30 天; 每执行一次 + 1 */
for (let i = 1; i <= 30; i++) {
// 1 号是从星期三开始的,判断如果是星期一到五的话 continue 跳过
if ( (i + 2) % 7 >= 1 && (i + 2) % 7 <= 5 ) continue;
// 没被 continue 跳过的,会在这行程序码进行 + 1
holiday++;
}
holiday += 1; // 不能忘了中秋节是在星期二
console.log(`红字有 ${holiday} 天`); // 红字有 9 天
就如同我上一篇所说,既然 for 回圈 和 while 回圈 使用的情况与结果都差不多,那为什麽还会存在,一定是有它的意义在!
大多数的情况,都会使用 for 回圈,是因为 for 回圈把控制回圈次数的条件都集中一起写,阅读性比较高,适合 条件次数明确 的情况使用。
而当条件次数不明确呢? 没错!就要利用 while 回圈来达成了!while 回圈在面对随机性的时候,只要条件的部分符合,不用像 for 回圈要设定好三个值,while 回圈就比 for 回圈会更加灵活好用且更直觉。
这边举一下 008 天 重新认识 JavaScript 书中很好的例子,当大乐透要使用「电脑选号」时,回圈要如何判定呢? 规则:「从 1~49中,随机选9个不重复的号码」,这就留给各位思考了。
<<: 【从实作学习ASP.NET Core】Day13 | 後台 | 编辑与删除
这个章节中,我们探讨四类查询指令中剩下的 QBE 条件输入指令 CONSTRUCT。做完条件的输入...
tags: Ryu REST API REST: Representational State Tr...
来到了第四天,还在第一个练习,但每天都有一点不一样的收获, 今天练习到在Shape 底下加使用Rep...
近期将依些老程序转移至微服务上, 因为原本程序使用了大量 out 语法, 为了能够让微服务的 API...
纯 JS 的环境里要改变 DOM 元素,除了要找到他,还要用 setAttribute, textC...