JavaScript—流程控制(分支)
流程控制
在程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的。通常需要通过控制代码的执行顺序来实现我们要完成的功能。
简单理解:流程控制就是控制我们的代码按照什么结构顺序来执行。
流程控制主要有三种结构,分别是顺序结构、分支结构和循环结构,这三种结构代表三种代码执行顺序。
顺序流程控制
顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,依次执行。
分支流程控制
分支流程控制if语句
由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码,从而得到不同的结果。
分支流程控制if语句
var a = prompt('输入a的值:');
if (a > 2/*条件表达式*/) {
alert('a大于2');//条件成立执行的代码
}
多分支
var a = prompt('输入a的值:');
if (a > 2/*条件表达式1*/) {
alert('a大于2');//条件成立执行的代码
}
else if (a < 2/*条件表达式2*/) {
alert('a不大于2');//条件成立执行的代码
}
else if (a == 2/*条件表达式3*/) {
alert('a等于2');//条件成立执行的代码
}
else {
alert('Eorro');//最后的语句
}
三元表达式
格式:条件表达式? 表达式1:表达式2
如果条件表达式为真返回表达式1,反之,返回表达式2
三元表达式
var a = 1;
var result = a > 2 ? 'yes' : 'no';
console.log(result);
数字补0(常用于倒计时)
- 用户输入0~59的数字。
- 如果数字小于10则在该数字前补0否则不操作。
- 用一个变量存储这个返回值后输出。
时间补零
var time = prompt('输入一个数');
var result = time < 10 ? '0' + time : time;
console.log(result);
分支流程控制switch语句
switch语句是多分支语句,用于基于不同的条件来执行不同的代码。当要针对变量设置一系列特定值时,优先考虑使用。
switch语句
switch (2/*表达式*/) {
case 1: // 常量表达式1
console.log('这是1'); break;//语句1;
case 2: //常量表达式2:
console.log('这是2'); break;//语句2
//case 可添加语句n个
default: console.log('没有匹配的值');//执行最后的语句
}
在每一case语句之后增加break 语句,可以让每一次执行之后均可跳出switch语句,避免输出其他结果。
switch和ifelse if的区别
- 一般情况下两者可以互相替换。
- switch……case通常用于所判断的值比较确定的情况,而if……else……更灵活,常用于范围判断。
- switch语句进行条件判断直接执行程序的条件语句,效率更高,而if……else语句有多少种条件就要判断多少次。
- 分支表较少时,if……else语句执行效率更高,反之,switch效率更高。
循环流程控制
循环的目的可以重复执行某些语句。
for循环
重复执行某些代码通常和计数有关
for循环
for (var i = 1/*初始化变量*/; i <= 100/*条件表达式*/; i++/*操作表达式*/) {
console.log('example');//执行语句
}
for循环执行不同代码
for (var i = 1; i <= 100; i++) {
if (i == 2) {
console.log('现在i=1');
}
else if (i == 100) {
console.log('现在i=100');
}
else {
console.log('现在i不等于1也不等于100');
}
}
for循环求和
var sum = 0;
for (var i = 0; i <= 100; i++) {
sum = sum + i;
}
console.log('1到100的和为' + sum);
for循环简单的使用
var sum = 0;
var n = prompt('请输入个数');
for (var i = 1; i <= n; i++) {
var num = prompt('输入数字');
sum = sum + parseFloat(num);
}
console.log('这几个数字和为' + parseInt(sum));
var average = sum / parseFloat(n);
console.log('这几个数平均值为' + average);
双for打印n行n列
var n = prompt('输入你需要输出的*个数');
var str = '';
for (var i = 1; i <= n; i++) {
for (var j = 1; j <= n; j++) {
str = str + '*';
}
str = str + '\n';
}
console.log(str);
双for循环打印倒三角
var n = prompt('输入你需要输出的*个数');
var str = '';
for (var n; n >= 0; n--) {
for (var i = 1; i <= n; i++) {
str = str + '*';
}
str = str + '\n';
}
console.log(str);
乘法口诀表
var n = 9;
var str = '';
for (var i = 1; i <= n; i++) {
for (var j = 1; j <= i; j++) {
str += j + '×' + i + '=' + i * j + '\t';
}
str += '\n';
}
console.log(str);
while循环
执行思路:当条件表达式为真(true)时执行循环体。否则退出循环。
while循环
var i = 1;
while (i <= 10/*条件表达式*/) {
console.log('第' + i + '遍输出循环体'); //循环体
i++; //操作表达式
}
while循环
var exit = prompt('输入“00”退出提示窗口');
while (exit !== '00') {
exit = prompt('输入“00”退出提示窗口');
}
alert('退出成功');
do……while循环
执行思路,与while不同的是do……while要先执行一遍循环体。再判断条件,其它执行逻辑与while一致。
do……while循环
var i = 0;
do {
console.log('第' + i + '次输出');//循环体
i++;
} while (i <= 5/*条件表达式*/)
continue关键字
用于跳出本次循环,继续下一次循环。
continue跳出
for (var i = 0; i <= 5; i++) {
if (i == 3 || i == 4) {
continue;
}
console.log('这个数字是' + i);
}
break关键字
用于跳出整个循环(循环结束)。
break中断
or (var i = 1; i <= 10; i++) {
if (i == 3) {
break;
}
console.log('这个题做错了' + i + '遍');
}
console.log('已经错了' + i + '遍不能做了');