二、(2)JavaScript流程控制语句
JavaScript-流程控制语句
1. 输入对话框
prompt为用户提供一个输入对话框,用户可以在输入框中输入内容并且点击确定(Enter),程序可以接受输入的内容。
//弹出一个输入框,将用户录入的内容被保存到value变量中告知给计算机。 var value = prompt('提示信息','默认值'); console.log(value);//输入的内容
2. 流程控制(重点)
流程控制简介
默认情况下,我们编写的每一条JavaScript代码,都会逐行执行,这是最简单的执行流程。但是实际开发中,往往并没有这么简单,我们需要根据某种情况,选择性的执行相应的代码,或者重复执行某段代码,这种情况在现实生活也是存在的。
程序中三种流程控制结构:
1.默认流程结构:代码逐行执行,最基本的流程。
2.分支流程结构:代码执行到某一段的时候,会根据条件判断,如果条件成立则相关执行任务;
3.循环流程结构:代码根据条件,重复的执行,但是条件应该保证会执行到某个时间点时不成立(false),或者任务就不会停止。 现实生活中,我们重复所做的事情就就是循环;
条件语句
条件语句:可以在程序设置一个条件语句,只有满足了这一条件才能让更多的语句得到执行。
1. 条件if语句
语法结构: if(条件表达式) { //语句1 //语句.... }
var age = 18; /** *判断是否是一个成年人 */ if(age>=18){ console.log(“你是一个成年人”); } /** * 判断输入数字是否为偶数 */ var num = prompt('请输入值:'); if(num%2==0){ console.debug(num+"为偶数"); }
2. 条件分支if else语句
语法结构: if(条件表达式) { //条件成立的需要执行的语句 }else{ //不成立的需要执行的语句 }
/* 判断一个数字是否是偶数,否则为奇数。小学生思维:如果一个数字,不是偶数,那么就是奇数。*/ var num = prompt('请输入值:'); if(num%2==0){ document.write(num+"为偶数"); }else{ document.write(num+"为奇数"); }
3. 条件分支if else if else语句
语法结构: if(条件1){ //语句... //语句... }else if(条件2){ //语句... //语句... }else if(条件N){ //语句... //语句... }else{ //条件都不满足的语句 } 语法结构: if(条件1){ //语句... //语句... }else if(条件2){ //语句... //语句... }else if(条件N){ //语句... //语句... }
/* 60分及格,70分中等,80分良好,90分优秀,对话框输入一个分数,在页面上输出级别*/ var score = prompt('请录入分数'); var result; if(score>=90){ result = '优'; }else if(score>=80){ result = '良'; }else if(score>=60){ result = '及格'; }else{ result = '不及格'; } document.write(result);
通过if elseif else完成业务需求时注意条件的顺序,以下代码虽然语法正确,但是无法完成业务需求
var score = prompt('请录入分数'); var result; if(score>=60){ result = '及格'; }else if(score>=80){ result = '良'; }else if(score>=90){ result = '优'; }else{ result = '不及格'; } document.write(result);
4. 状态分支switch(选择)语句(了解)
switch(表达式){ case 表达式1: 语句1; break; case 表达式2: 语句2; ... break; case 表达式n: 语句n; break; default: 语句n+1; break; }
- switch语句:“如果switch中的表达式等于case 后面的个值(value),则执行后面的语句,截止break;或switch的右花括号(})”。
- default:默认语句,如果switch中的表达式与case后面的值都不同等,那么默认执行default后面的语句,default不是必须的。
- break:关键字会导致代码执行流跳出switch语句。
switch与if类似,但是switch比较适合用于对某个状态值的判断,而if则是针对稍复杂的判断,但是其实switch与if可以相互转换。
/** * 输入1--4分别再对应输出 春夏秋冬 ,其他的输出 “未知季节” if版本 */ var num = prompt('请输入:'); if(num==1){ console.log(“春”); }else if(num==2){ console.log(“夏”); }else if(num==3){ console.log(“秋”); }else if(num==4){ console.log(“冬”); }else{ conosle.log(“未知季节”); }
/** * 输入1--4分别再对应输出 春夏秋冬 ,其他的输出 “未知季节” switch版本 */ var num = prompt('请输入:'); num = parseInt(num);//注意: switch…case判断全等于(===) switch (num){ case 1: document.write('春'); break; case 2: document.write('夏'); break; case 3: document.write('秋'); break; case 4: document.write('冬'); break; default: document.write('未知季节'); break; }
5. switch特点(了解)
1. switch之后必须是case或者是default
2. break可以不要,但是后面的case就不在判断,直到遇到break或者switch语句执行完毕才结束
3. default可以出现在switch的任何位置.但还是其他没有匹配上才执行default;
6. if语句和switch语句比较(了解)
switch是状态分支语句,switch中的状态值和case后的值作比较,成立才执行。
- if是条件分支,值判断if中的条件,条件中可以是范围.
- if中条件可以是一个范围;
- switch条件只能某个值判断;
/** * 根据用户输入的月份,告知计算机帮我们输出对应的季节 * 3,4,5月==> 春季 * 6,7,8月==> 夏季 * 9,10,11月==> 秋季 * 12,1,2月==> 冬季 * 其他的月份==> 输入错误,请重新输入 */ var month = prompt('请输入月份:'); var result; if(month>=3 && month<=5){ result = '春季' }else if(month>=6 && month<=8){ result = '夏季' }else if(month>=9 && month<=11){ result = '秋季' }else if(month==12 || (month>=1 && month<=2)){ result = '冬季' }else{ result = "输入错误,请重新输入"; } document.write(result); var month = prompt('请输入月份:'); var result; switch (month){ case 3: case 4: case 5: result = "春季"; break; case 6: case 7: case 8: result = "夏季"; break; case 9: case 10: case 11: result = "秋季"; break; case 12: case 1: case 2: result = "冬季"; break; default: result = "输入错误,请重新输入"; break; }
7. switch和if的选择
switch表示状态分支,与有限个状态值作比较. 可以通过case写出状态值和switch中的值做比较. 状态值太多的话写太多的case不现实。
条件分支表示区间条件,一般判断的是一个范围.
8. 条件分支应用
根据不同的场景选择不同的语句让计算机完成不同的行为。套用上面的语法结构实现即可。
如果你的需求中,存在:“如果什么,就干什么,或者就做什么”,那么就是该使用条件分支的时候;
循环语句(重点)
你常常希望反复执行同一段代码。我们可以使用循环来完成这个功能,这样就用不着重复地写若干行相同的代码,但是只有满足条件时才反复执行下去。
1. for循环(重点)
for(初始化循环变量表达式; 循环条件判定表达式; 循环变量更新表达式){ 循环体 } 初始化循环变量表达式:记录循环的次数; 循环条件判定表达式:判断是否执行循环,只有条件满足才进行循环; 循环变量更新表达式:修改条件表达式中的变量; 循环体:需要多次执行的语句;
循环要素:
- 1、记录循环次数;var i=0;
- 2、循环的条件; i<10;
- 3、修改循环条件表达式;i++;
- 4、循环的语句;console.log(“i love you”);
例:
/**输出:100次“i love you”*/ for(var i=0;i<100;i++){ console.log(“i love you”); }
例:
/** 输出:1-10的数字*/ for(var i=1;i<=10;i++){ console.log(i); }
2. for循环深入
for(初始化循环变量表达式A;循环条件判断表达式B;循环变量更新表达式D){ 循环体C }
初始化循环变量表达式A:
在for语句开始时执行并且执行一次,主要是初始化一些数据,这些数据在后面for循环的其他表达式中要使用。
循环条件判断表达式B:
条件表达式的结果为boolean类型的值;
true: 执行循环体C
false: for语句执行完毕,不在循环
循环体C:
要反复执行的代码。
循环变量更新表达式D:
循环体C执行后,该代码执行,通常用来修改变量的值后, 条件表达式B再判断是否成立。
3. for循环练习
1. 输出h1到h6的标题
2. 求解1—100和
3. 求解 1-100 奇数和
4. 求解1-100中能被3整除的所有数字的和
5. 求解1-100 能被3和5同时整除的数字的和
6. 使用for循环输出2000年到2100年之间的闰年(闰年:400的倍数 或者 是4的倍数不是100的倍数)
4. while循环(了解)
while(条件表达式){ 循环体语句 }
while:循环执行代码,如果while()条件表达式为真,将执行while花括号{}中的语句,直到条件不为真时,才会终止while运行。
5. do while循环(了解)
do{ 循环体 }while(条件表达式);
dowhile循环语句与while类似,在对条件表达式求值之前,循环体内的代码至少会被执行一次。
先执行循环体再做条件判断. 如果条件表达式成立,继续执行循环体.
通常是由于条件表达式的判断依赖于循环体的执行才采用do..while
注意:do..while()后面一定要加上;
6. 死循环
死循环:循环条件表达式永远为真,循环体语句一直执行,这种情况一定不要出现在你的代码中,后果自负。
3. 嵌套循环(难点)
循环中循环:
外面的循环每执行一次循环体就会重新执行。 所以说里面的循环要重新全部执行一次。
4. 终止循环语句break,continue
break,continue用法(掌握)
循环在条件不满足时将会终止.
也可以通过break,continue控制循环.
break: 跳出当前循环
continue: 终止本次循环,继续下次循环.
跳出多层循环:
默认情况下值跳出一层循环。如果需要跳出外层循环,需要在break或者是continue后增加跳出的标记. 跳出指定标记的循环。
5. debugger调试工具
debugger调试常用方法
- 1) debugger:在代码中插入一个断点
- 2) step over:一步一步的调试 但是如果遇到函数 会直接使用函数的结果 不会进入函数
- 3) step into :一步一步的调试 如果遇到函数 会进入函数
- 4) step out :出函数(跳转到函数执行结束的下一行)
- 5) step :单步调试 一步一步的 每一步都执行
- 6) resume :跳到下一个断点
- 7) watch :观察变量的变化
6. 作业
1、(分支结构)定义一个变量表示“分数” 并给其赋值,在页面中是根据分数高低不
同输出如下文字:优秀(>=90),良好(>=80),中等(>=70),及格(>=60),
不及格(其他情况)。
2、(分支结构)根据一个人的存款的多少决定使用什么交通工具:如果我有10万元以
上,就买小汽车上班或者如果我有5000元以上,我就买摩托上班,或者如果我有300元
以上,我就买自行车上班,或者如果我有20元以上,我就坐公交上班,否则,我就只好
步行上班提示:使用一个变量表示其存款数,对该变量进行判断以输出所采用的交通工
具。
3、(循环)输出1-100之间能被3整除的数。
4、(循环)计算1-1000之间能被3整除的偶数的个数。
5、(流程:分支与循环)输出从2000年(含)到3000年(含)间的所有闰年。提示:
闰年:400的倍数 或者 是(4的倍数不是100的倍数)。
6、(循环,简单逻辑)写一个程序输出1到100这些数字。但是遇到数字为3的倍数的时
候,输出“三”替代数字,为5的倍数用“五”代替,既是3的倍数又是5的倍数则输
出“三五”。