控制流程,控制结构介绍
阅读 4:16·字数 1281·发布
控制流程
控制流程是指对代码执行顺序的控制,也被称为流程控制,在默认情况下,人们编写的代码将按照顺序依次执行,一行代码执行完毕后会进入下一行,这看上去似乎没有问题,但对于某些情况却是不可行的。
比如,一个功能需要反复执行一千次,复制出一千段代码将让人无法接受,因为他的篇幅太长,谁知道是一千段,还是一千零一段,即便 IDE 可以帮助你统计,那也是不明智的。
控制流程种类
除了按顺序执行,根据行为和效果,控制流程还可以分为以下几种。
- 有条件分支
- 有条件分支将在条件成立时,进入并执行分支包含的代码。
- 有条件循环
- 有条件循环将在条件成立时,反复执行循环包含的代码。
- 无条件跳转
- 无条件跳转将使程序跳转至其他代码位置,这可能是从循环跳出,也可能是函数的开始或结束。
- 无条件终止
- 无条件终止将终止整个程序的执行。
无条件跳转
用于无条件跳转的关键字有很多,比如,continue
,break
,return
,以及非常著名但现已消声觅迹的goto
。
- continue
continue
一般用于跳出本次循环,不影响整个循环的执行。- break
break
一般用于跳出整个循环,当目标或任务已经完成时,结束循环的执行是明智的。- return
return
一般用于跳出当前函数或方法的执行,无论在函数或方法的哪个位置,他都是有效的。- goto
goto
将跳转至指定的标识符位置继续执行。
为何 goto 带来了危害?
过多的运用goto
使得代码变得难于维护,因为此时通过顺序阅读,并不容易理解代码表示的逻辑,而且你可能很难搞清楚代码的影响范围。
在下面的 JavaScript 代码中,continue
用于跳过偶数,break
用于在和大于100
时跳出整个循环。
let odd = 0
let i = 0
// 将 1 至 100 的奇数相加,当和大于 100 时跳出
while (true) {
// 如果是偶数,则跳出本次循环
if (++i % 2 == 0)
continue
odd += i
// 如果和大于 100,则跳出整个循环
if (odd > 100)
break
}
console.log(`奇数之和为:${odd}`)
奇数之和为:121
控制结构
控制结构是控制流程的具体实现,主流观点将控制结构分为顺序结构,分支结构和循环结构。
- 分支结构
- 分支结构将根据给出的表达式,来决定是否可以执行某个分支中的代码,常见的分支结构有
if
和switch
。此外,try
也可被视为分支结构的一种,他通常以异常类型为条件。 - 循环结构
- 循环结构用于反复执行一段代码,当指定的表达式不成立时,循环结构将被跳出,当然,你也可以使用
break
和continue
跳出整个和本次的循环。常见的循环结构有for
和while
。
在下面的 JavaScript 代码中,分支结构根据数字显示了不同的消息,循环结构则计算了1
至100
中所有偶数的和。
// 产生一个随机数
const number = Math.random()
// 分支结构,根据数字显示信息
if (number < 0.5)
console.log('数字小于 0.5')
else if (number > 0.5)
console.log('数字大于 0.5')
else
console.log('神奇的数字')
let even = 0
// 使用循环结构计算 1 至 100 所有偶数的和
for (let i = 1; i <= 100; i++)
if (i % 2 == 0)
even += i
console.log(`偶数之和为:${even}`)
数字小于 0.5
偶数之和为:2550