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通过流程语句来执行程序流,程序流有若干语句组成。在正常情况下,程序中 的语句时按照书写顺序执行的,这种结构称为顺序结构。除了顺序结构之外还有选择结构和循环结构。

分支结构

由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果

jquery流程设计器 javascript流程控制_jquery流程设计器


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)