JavaScript流程控制
- 简介
- 分支结构
- if语句
- if语句
- if...else语句
- switch语句
- 循环结构
- while循环
- do-while循环
- for循环
- continue和break关键字
- 总结
- 练习
- 计算数列:2/1,3/2,5/3,8/5...的前20项之和
- 判断一个数是否是素数
- 斐波拉契数列1 1 2 3 5 8 13 21...的前20项之和
简介
JavaScript通过流程语句来执行程序流,程序流有若干语句组成。在正常情况下,程序中 的语句时按照书写顺序执行的,这种结构称为顺序结构。除了顺序结构之外还有选择结构和循环结构。
分支结构
由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果
JS提供了两种分支结构语句:
- if语句
- switch语句
if语句
if语句
- 结构:
if(条件表达式){
代码
}
- 含义:如果条件表达式的结果为true,则执行大括号中的代码
- 示例:
if(n=='米饭'){
alert("中午吃米饭")
}
if…else语句
- 结构:
if(条件表达式){
代码1
}else{
代码2
}
- 含义:如果条件表达式的结果为true,则执行代码1;如果条件表达式的结果为false,则执行代码2
- 示例:
if(age>80){
alert("老年人")
}else if(age>70){
alert("中老年人")
}
switch语句
- 结构:
switch(表达式){
case 常量1:alert(代码1);break;
case 常量2:alert(代码2);break;
case 常量3:alert(代码3);break;
case 常量4:alert(代码4);break;
......
case 常量n:alert(代码n);break;
default:代码n+1
}
- 含义:
首先设置表达式 (通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。
break 来阻止代码自动地向下一个 case 运行,如果没有break,会自动执行下一个case中的代码,直到遇到break或全部执行完毕。
default 关键词来规定匹配不存在时做的事情。 - 示例
//1到9岁 儿童 ,10- <20少年 20 <30青年 30-60 中年 60以上老年时期
var age =prompt("请输入您的年龄")
age=parseInt(age);
if(age>=0 && age<=150){
var value =parseInt(age/10)
switch(value){
case 0:alert("儿童");break;
case 1:alert("少年");break;
case 2:alert("青年");break;
case 3:
case 4:
case 5:alert("中年");break;
case 6:
case 7:
case 8:
case 9:
case 10:alert("老年");break;
default:alert('神仙')
}
}else{
alert("违法数字")
}
循环结构
while循环
- 结构:
while(条件表达式){
循环体代码
}
- 含义:
先执行条件表达式,若结果为true,则执行循环体代码;若结果为false,则退出循环。
每次循环都会执行以上步骤。 - 示例:
例如:计算100以内所有的偶数和
var sum = 0
var i = 2
while(i<=100)
{
sum = sum + i
i = i+2
}
console.log("100以内所有的偶数之和:"+sum)
do-while循环
- 结构:
do{
循环体代码
}while(条件表达式)
- 含义:
第一步:不管"条件表达式",先执行一遍循环体语句。
第二步:执行条件表达式,若结果为true,则执行循环体代码;若结果为false,则退出循环。
第x步:重复执行第二步,直到退出循环。
不管"条件表达式"是否为真,循环体语句至少要执行一次 。
for循环
- 结构:
for(表达式1;表达式2;表达式3)
{
循环体语句
}
- 含义:
“表达式1”:初始化变量
“表达式2”:条件表达式,控制循环体语句是否执行
“表达式3”:使循环趋向结束的表达式
注意:三个表达式都可以省略,但是分号不能省略 - 示例:
//求前1,2,3,4,5的和
var sum = 0;
for(var i=1;i<=5;i++){
sum = sum + n
}
console.log(sum)
continue和break关键字
- continue语句:立刻结束本次循环,直接进入下一次循环(本次循环之后的代码不会执行)
- break语句:立刻终止循环(立刻跳出循环体)
总结
当循环次数明确用for循环
当循环次数不明确,但循环条件明确时,用while或do-while循环
练习
计算数列:2/1,3/2,5/3,8/5…的前20项之和
var a = 2 //代表分子
var b = 1 //代表分母
var s = 0 //用户求和
for(var i=0;i<20;i++){
s = s+a/b
var t = a+b //分子与分母之和
b = a
a = t
}
console.log("计算数列:2/1,3/2,5/3,8/5...的前20项之和="+s)
判断一个数是否是素数
var n = prompt("请输入一个正整数")
var t = parseInt(n)
//var flag = true //标记变量,假设当前的整数是一个素数,在循环中若发现当前的整数不是一个素数,则将flag设置为false
var i = 2
while(i<t){
if(t % i == 0){
//flag = false
break;
}
i++
}
// if(flag === true){
// console.log(t+"是一个素数")
// }else{
// console.log(t+"不是一个素数")
// }
if(i>=t){
console.log(t+"是一个素数")
}else{
console.log(t+"不是一个素数")
}
斐波拉契数列1 1 2 3 5 8 13 21…的前20项之和
var s = 0
var f1=f2=1
s = f1+f2
for(var i=1;i<=18;i++){
var fn = f1+f2
f1 = f2
f2 = fn
s = s + fn
}
console.log("斐波拉契数列的前20项之和为:"+s)