控制流程,控制结构介绍

我被代码海扁 @codebeatme-s @103466775
阅读 4:16·字数 1281·发布 

控制流程

控制流程是指对代码执行顺序的控制,也被称为流程控制,在默认情况下,人们编写的代码将按照顺序依次执行,一行代码执行完毕后会进入下一行,这看上去似乎没有问题,但对于某些情况却是不可行的。

比如,一个功能需要反复执行一千次,复制出一千段代码将让人无法接受,因为他的篇幅太长,谁知道是一千段,还是一千零一段,即便 IDE 可以帮助你统计,那也是不明智的。

控制流程种类

除了按顺序执行,根据行为和效果,控制流程还可以分为以下几种。

有条件分支
有条件分支将在条件成立时,进入并执行分支包含的代码。
有条件循环
有条件循环将在条件成立时,反复执行循环包含的代码。
无条件跳转
无条件跳转将使程序跳转至其他代码位置,这可能是从循环跳出,也可能是函数的开始或结束。
无条件终止
无条件终止将终止整个程序的执行。

无条件跳转

用于无条件跳转的关键字有很多,比如,continuebreakreturn,以及非常著名但现已消声觅迹的goto

continue
continue一般用于跳出本次循环,不影响整个循环的执行。
break
break一般用于跳出整个循环,当目标或任务已经完成时,结束循环的执行是明智的。
return
return一般用于跳出当前函数或方法的执行,无论在函数或方法的哪个位置,他都是有效的。
goto
goto将跳转至指定的标识符位置继续执行。

为何 goto 带来了危害?
过多的运用goto使得代码变得难于维护,因为此时通过顺序阅读,并不容易理解代码表示的逻辑,而且你可能很难搞清楚代码的影响范围。

在下面的 JavaScript 代码中,continue用于跳过偶数,break用于在和大于100时跳出整个循环。

control_flow.js
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

控制结构

控制结构是控制流程的具体实现,主流观点将控制结构分为顺序结构,分支结构和循环结构。

分支结构
分支结构将根据给出的表达式,来决定是否可以执行某个分支中的代码,常见的分支结构有ifswitch。此外,try也可被视为分支结构的一种,他通常以异常类型为条件。
循环结构
循环结构用于反复执行一段代码,当指定的表达式不成立时,循环结构将被跳出,当然,你也可以使用breakcontinue跳出整个和本次的循环。常见的循环结构有forwhile

在下面的 JavaScript 代码中,分支结构根据数字显示了不同的消息,循环结构则计算了1100中所有偶数的和。

control_flow.js
// 产生一个随机数
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

源码

control_flow.js·codebeatme/programming·GitHub