在一个程序执行的过程中,各条代码的执行顺序对程序的结构是有直接影响的,很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能。
流程控制就是来控制我们的代码按照什么结构顺序来执行。
流程控制主要有三种结构:顺序结构、分支结构和循环结构,这三种结构代表三种代码执行的顺序。
顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序回按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果。
语句可以理解为一个行为,循环语句和分支语句就是典型的语句。
一个程序由很多个语句组成,一般情况下,会分割成一个一个的语句。
if(条件表达式){
//执行语句
}
if
里面的条件表达式为真则执行大括号里面的执行语句if
条件表达式结果为假则不执行大括号里面的语句直接执行if语句后面的代码 if (3 > 5) {
alert('岳泽以')
}
alert('个人博客')//最后结果弹出个人博客
案例:判断可否上网
var age = prompt('请输入年龄')
if (age >= 18) {
alert('允许上网')
}
如果表达式为真执行语句1否则执行语句2
if (条件表达式) {
//执行语句1
} else {
//执行语句2
}
案例:判断年份是否为闰年
var year = prompt('请输入年份')
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
alert('你输入的年份是闰年')
} else {
alert('你输入的年份是平年')
}
if语句里面的语句1和else里面的语句2最终只能有一个语句执行。
就是利用多个条件来选择不同的语句执行,得到不同的结果,多选1的过程。
if (条件表达式1) {
//语句1;
} else if (条件表达式2) {
//语句2;
} else if (条件表达式3) {
//语句3;
} else {
//最后语句;
}
案例:判断成绩级别
var score = prompt('请输入分数:');
if (score >= 90) {
alert('A');
} else if (score >= 80) {
alert('B');
} else if (score >= 70) {
alert('c');
} else if (score >= 60) {
alert('D');
} else {
alert('你挂科了');
}
由三元运算符组成的式子叫做三元表达式。
语法结构:
条件表达式 ? 表达式1 : 表达式2
如果条件表达式结果为真,则返回表达式1的值,如果表达式结果为假,则返回表达式2的值。
var num = 10;
var result = num > 5 ? '是的' : '不是的';
alert(result);
案例:数字补0
var time = prompt('请输入一个0~59的数字');
var result = time < 10 ? '0' + time : time;
alert(result);
switch语句也是多分支语句,也可以实现多选1。
switch (表达式) {
case value1:
执行语句1;
break;
case value2:
执行语句2;
break;
...
default:
执行最后的语句;
}
执行思路:利用我们的表达式的值和case里面的选项值相匹配,如果匹配上,就执行该case里面的语句,如果都没有匹配上,那么执行default里面的语句。
switch (2) {
case 1:
alert('这是1');
break;
case 2:
alert('这是2');
break;
case 3:
alert('这是3');
break;
default:
alert('没有匹配结果');
}
switch语句注意事项:
案例:查询水果
var name = prompt('请输入要查询的水果');
switch (name) {
case '苹果':
alert('3元/斤');
break;
case '香蕉':
alert('5元/斤');
break;
case '橘子':
alert('2元/斤');
break;
default:
alert('没有匹配结果');
}
循环的目的:在实际问题中,有许多具有规律性的重复操作,因此在程序中要完成这类操作就需要重复执行某些语句。
在Js中,主要有三种类型的循环语句
在程序中,一组被重复执行的语句被称之为循环体,能否继续重复执行,取决于循环的终止条件。
由循环体以及循环的终止条件组成的语句,被称之为循环语句。
for循环重复执行某些代码,通常根计数有关。
语法结构:
for (初始化变量; 条件表达式; 操作表达式) {
//循环体
}
for (var i = 1; i <= 100; i++) {
alert('你好!');
}
//1.首先执行里面的计数器变量 var i = 1,但是这句话在for里面只执行一次
//2.去i<=100来判断是否满足条件,如果满足条件就执行循环体,不满足条件退出循环
//3.最后去执行i++,i++是单独写的代码,递增,第一轮结束
//4.接着去执行i<=100,如果满足条件就执行循环体,不满足条件退出循环
//结果:弹出100次你好!后退出循环
执行过程:初始化变量--条件表达式--循环体--操作表达式
断点调试是指自己在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。
断点调试可以帮助我们观察程序的运行过程。
可以让用户控制输出的次数
var num = prompt('请输入要输出的次数');
for (var i = 1; i <= num; i++) {
alert('你好!')
}
for循环可以重复执行不同的代码,因为我们有计数器变量i的存在,i每次循环值都会变化。
案例:输入1一个人1~100岁
for (var i = 1; i <= 100; i++) {
alert('这个人今年' + i + '岁了');
}
//判断输出岁数
for (var i = 1; i <= 100; i++) {
if (i == 1) {
alert('这个人刚出生');
} else if (i == 100) {
alert('这个人已经去世了');
} else {
alert('这个人今年' + i + '岁了');
}
}
for循环因为有了计数器的存在,我们还可以重复的执行某些操作,比如做一些算术运算。
案例:计算1~100的和
var sum = 0;
for (var i = 1; i <= 100; i++) {
//sum = sum + i;
sum += i;
}
alert(sum);
var str = '';
for (var i = 1; i <= 5; i++) {
str = str + '※';
}
console.log(str);
很多情况下,单层for循环并不能满足我们的需求,比如我们要打印一个5行5列的图形、打印一个倒直角三角形等,此时就可以通过循环嵌套来实现。
循环嵌套是指在一个循环语句中再定义一个循环语句的语法结构,例如在for循环语句中,可以再嵌套一个for循环,这样的for循环语句被称之为双重for循环。
for (外层的初始化变量; 外层的条件表达式; 外层的操作表达式) {
for (里层的初始化变量; 里层的条件表达式; 里层的操作表达式) {
//执行语句;
}
}
我们可以把里面的循环看做是外层循环的语句,外层循环循环一次,里面的循环执行全部。
for (var i = 1; i <= 3; i++) {
console.log('这是外层循环的第' + i + '次');
for (var j = i; j <= 3; j++) {
console.log('这是里层循环的第' + i + '次');
}
}
while语句可以在条件表达式为真的前提下,循环执行指定的一段代码,直到表达式不为真时结束循环。
语法结构:
while (条件表达式) {
//循环体代码
}
执行思路:
while (num <= 100) {
console.log('岳泽以');
num++;
}
案例:计算1-100的和
var sum = 0;
var j = 1;
while (j <= 100) {
sum += j;
j++;
}
console.log(sum);
do...while循环语句其实是while语句的一个变体,该循环会先执行一次代码块,然后对条件表达式进行判断,如果条件为真,就会重复执行循环体,否则退出循环。
do {
//循环体
} while (条件表达式)
跟while不同的地方:
案例:不爱我就一直弹
do {
var message = prompt('你爱我吗?');
} while (message !== '我爱你')
alert('我也爱你!');
continue关键字用于立即跳出本次循环,继续下一次循环(本次循环中continue之后的代码就会少执行一次)。
例如:吃5个包子,第3个有虫子,就扔掉第3个,继续吃掉第4个和第5个包子。
for (var i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
console.log('我正在吃第' + i + '个包子');
}
break关键字用于立即跳出整个循环(循环结束)。
例如:吃5个包子,吃到第3个发现里面有半个虫子,其余的(3、4、5)不吃了。
for (var i = 1; i <= 5; i++) {
if (i == 3) {
break;
}
console.log('我正在吃第' + i + '个包子');
}