第一节:流程控制
1.1 什么是流程控制
流程控制: 程序在执行过程中,通过特定条件控制程序的执行次序。
1.2 三种程序结构
注意:else是可以省略的,代表没有一个默认选择
下面是例子
-
顺序结构:从上往下,(等式)从右到左 (如果右边是表达式 (左到右))
-
分支结构:控制代码何时(根据条件)执行,是否执行。
-
循环结构:控制代码执行(根据条件)多少次。
第二节:分支结构--if 如果
2.1 单if 条件判断: 单分支
语法:
if(条件表达式){ 代码块; }
执行过程: 如果 if后面括号里的条件为true,则执行大括号中的代码块。否则不执行。
注意: 在这个代码块中,不能乱加";"
// 输入数据,转型为数值,并赋值给score var score = Number(prompt("请输入你的分数",'')); // 使用分支通过条件判断,决定是否奖励 // 单分支: 只有一种选择 if(score>=90){ // 满足条件则执行代码块 alert("奖励一辆电动车"); }
2.2 if else 判断: 双分支
语法:
if(条件表达式){ 代码块1; }else{ 代码块2; }
执行流程:
1.如果if后面条件表达式成立,则执行代码块1
2.如果if后面条件表达式不成立,则执行代码块2
注意: else 不能加条件
// if else 双分支 // 如果你的考试分数超过90分,奖励一辆电动车 // 如果你的考试分数没有超过90,则扫地一星期 var score = Number(prompt("请输入你的分数","")); if(score>=90){ alert("奖励一辆电动车"); }else{ alert("打扫房间一星期"); }
2.3 多重if 判断
语法
if(条件表达式1){ 代码块1; }else if(条件表达式2){ 代码块2; }else if(条件表达式3){ 代码块3; } .... // 省略部分条件 else{ // else可以省略 代码块n; }
执行流程:
-
代码自上而下执行,如果条件表达式1成立,则执行代码块1, 代码块1执行之后,其它分支不再执行。
-
如果条件表达式1不成立,则判断条件表达式2是否成立,如果成立,则执行代码块2
-
如果条件表达式2不能成立,则判断条件表达式3是否成立,如果成立,则执行代码块3
-
如果条件表达式3不能成立,则依次判断后续条件。
-
如果所有的条件都不成立,则执行else中的代码块。
-
注意:else是可以省略的,代表没有一个默认选择
// if.. else if..else 多分支 // 输入一个分数,根据分数评定:优秀,良好,中等,差 // 优秀: >=90 良好: >=80 并且 <90 中等: >=60 并且 <80 差: <60 // var score = Number(prompt("请输入你的分数:","")); // if(score>=90){ // alert("优秀"); // }else if(score>=80){ // alert("良好"); // }else if(score>=60){ // alert("中等"); // }else{ // 60分以下 // alert("差") // }
// 能不能反向去写,实现评级 // 差>中等>良好>优秀 var score = Number(prompt("请输入你的分数:","")); // if(score<60){ // alert("差"); // }else if(score>=60){ //87分输出中等,因为条件不严谨 // alert("中等"); // }else if(score>=80){ // alert("良好"); // }else if(score>=90){ // alert("优秀"); // } if(score<60){ alert("差"); }else if(score>=60 && score<80){ //87分输出中等,因为条件不严谨 alert("中等"); }else if(score>=80 && score<90){ alert("良好"); }else if(score>=90){ alert("优秀"); } // 考虑: 如果分数是负数,或者 1000分,需要输出分数错误。 如何解决
第三节: 分支结构 switch - case
语法:
switch(变量/数据){ case 数据1: 代码块1; break; case 数据2: 代码块2; break; case 数据3: 代码块3; break; default: 默认代码块; break; }
执行流程:
-
根据switch后面括号中的数据,与下面case对应的值进行一一对比。
-
满足某一个case分支,则执行对应的代码块
-
如果上面的分支都不满足,则执行default后面的代码块
-
其中break(结束语句执行)表示整个switch语句结束,如果某个分支没有break,则代码会继续向下执行,直到遇到break或者所有语句执行完成,switch语句才会结束。
-
default语句可以省略。
// 胡八一,参加摸金校尉比武大赛,根据比赛结果,确定胡八一的江湖地位 // 如果取得第一名: 武林盟主 // 如果取得第二名: 武当掌门 // 如果取得第三名: 峨眉掌门 // 如果是其它名次: 逐出师门 // var mc = Number(prompt("请输入胡八一比武大赛的名次:","")); // if(mc==1){ // alert("武林盟主"); // }else if(mc==2){ // alert("武当掌门"); // }else if(mc==3){ // alert("峨眉掌门"); // }else{ // alert("逐出师门"); // } // var mc = Number(prompt("请输入胡八一比武大赛的名次:","")); // // switch(数据) : 括号里写数据,不是条件表达式 // // case:数据满足某种情况 // switch(mc){ // case 1: // alert("武林盟主"); // break; // case 2: // alert("武当掌门"); // break; // case 3: // alert("峨眉掌门"); // break; // default: // 上面条件都不满足,其它情况 // alert("逐出师门"); // break; // } var mc = Number(prompt("请输入胡八一比武大赛的名次:","")); // switch(数据) : 括号里写数据,不是条件表达式 // case:数据满足某种情况 switch(mc){ case 1: alert("武林盟主"); break; case 2: alert("武当掌门"); break; case 3: alert("峨眉掌门"); break; default: // 上面条件都不满足,其它情况 alert("逐出师门"); break; } // 根据今天星期几,输出吃什么 // 星期1,2 吃米饭 3,4 吃面条 5,6 饺子 7 减肥
-