JavaScript基础学习笔记(二、流程控制与循环)
流程控制:代码的执行过程
一、顺序结构:丛上到下从左到右执行代码的结构(不是很严谨)
二、分支结构:根据不同的情况执行对应代码
1.一个分支使用if语句;
2.两个分支使用if--else语句或者三元表达式;
3.多个分支使用if--else if---else....语句(针对范围的判断时使用)或者switch--case语句(针对具体值的判断时使用);
三、循环结构:重复做一件事情
1.while语句
2.do--while语句
3.for语句
分支结构语法:
if语句: if(/*条件表达式*/){ //执行语句 } if(/*条件表达式*/){ //成立执行语句 }else{ //否则执行语句 } if(/*条件表达式1*/){ //成立执行语句 }else if(/*条件表达式2*/){ //条件2成立执行语句 }else if(/*条件表达式3*/){ //条件3成立执行语句 }else{ //前面条件都不成立时执行语句 } 案例: 1、求两个数的最大数 var num1=10; var num2=20; if(num1>num2){ console.log("num1最大"); }else { consolo.log("num2最大"); } 2、判断一个数是偶数还是奇数 var num = parseInt(prompt("请您输入一个整数"));//输入不是数字时有BUG if(num%2==0){ console.log("您输入的是偶数!"); }else{ console.log("您输入的是奇数!"); } 3、分数转换,把百分制转换成ABCDE <60 E 60-70 D 70-80 C 80-90 B 90 - 100 A var sorce = parseInt(prompt("请您输入你的考试成绩")); if(sorce>90){ console.log("A"); }else if(sorce>80&&sorce<=90){ console.log("B"); }else if(sorce>70&&sorce<=80){ console.log("C"); }else if(sorce>60&&sorce<=70){ console.log("D"); }else{ console.log("E"); } 4、判断一个年份是闰年还是平年 闰年:能被4整除,但不能被100整除的年份 或者 能被400整除的年份 var year = parseInt(prompt("请您输入年份")); if(year%4==0&&year%100!==0||year%400==0){ console.log("您输入的是闰年"); }else{ console.log("您输入的是平年"); } 三元运算符:条件表达式 ? 执行语句1 : 执行语句2 案例:是否年满18岁 var age = parseInt(prompt("请输入您的年龄")); var result = age>=18 ? "您已成年" : "您未成年"; console.log(result); switch-case语句: switch(表达式){ case 常量1: 语句1; break; case 常量2: 语句2; break; ...... case 常量n: 语句n; break; default: 语句; break; } 注意:break可以省略,如果省略,代码会继续执行下一个case; 最后一个default也可以省略; switch语句在比较时使用的是全等操作符,因此不会发生类型转换 (如:字符串"10",不等于数值10。 案例: 1、获取一个人的成绩的级别,如果是A级则显示90到100直接的分数 var jiBie = prompt("请输入大写字母ABCDE中的任意一个字母"); switch(jiBie){ case "A" : console.log("您的分数为90到100之间"); break; case "B" : console.log("您的分数为80到90之间"); break; case "C" : console.log("您的分数为70到80之间"); break; case "D" : console.log("您的分数为60到70之间"); break; default: console.log("您的分数小于60"); break; } 2、根据月份显示对应的天数 var month = parseInt(prompt("请您输入月份")); switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: console.log("您输入的月份有31天!"); break; case 2: console.log("您输入的月份有28天!"); break; case 4: case 6: case 9: case 11: console.log("您输入的月份有30天"); break; }
循环结构语法:
while循环语句语法: 当循环条件为true时执行循环体,当循环条件为false时结束循环。 while(循环条件){ //循环体 } 案例: 1、计算1-100之间所有数的和 var i=1; var sum=0; while(i<100){ sum+=i; i++; } console.log(sum); 2、打印100以内是7的倍数的数字 var i=1; while(i<=100){ if(i%7==0){ console.log(i); } i++; } do...while语句语法:先执行循环体一次在判断循环条件,循环条件为true则继续循环,否则跳出循环。 do { //循环体 }while(循环条件); 案例: 1、求100以内所有3的倍数的和 var i=1; var sum=0; do{ if(i%3==o){ sum+=i; } i++; }while(i<100); console.log(sum); for循环语句:while和do...while一般用来解决无法确认次数的循环。 for循环一般在循环次数确定的时候比较方便 for(初始表达式1;判断表达式2;自增表达式3){ //循环体4 } //执行顺序:1243 ---- 243 -----243(直到循环条件变成false)。 案例: 1、打印9*9乘法表 document.write("<table border='1px solid #000' cellpadding='0' cellspacing='0'>"); for(var i=1;i<=9;i++){ document.write("<tr>"); for(var j=1;j<=i;j++){ document.write("<td>"); document.write(i+"*"+j+"="+i*j); document.write("</td>"); } document.write("</tr>"); } document.write("</table>"); 2、有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。 已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。 假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对? (兔子的规律为数列,1,1,2,3,5,8,13,21..) var mun1=1; var mun2=1; var sum=0; for(var i=3;i<=12;i++){ sum=mun1+mun2; mun1=mun2; mun2=sum; } console.log(sum+"对兔子");
布尔类型的隐式转换:流程控制语句会把后面的值隐式转换成布尔类型。
转换成true 非空字符串、非0数字、true、任何对象 转换成false 空字符串、0、false、null、undefined 例子: var message; // 会自动把message转换成false if(message){ alert("我执行了"); }
break和continue
//break:立即跳出整个循环,即循环结束,开始执行循环后面的内容(直接跳到大括号) //continue:立即跳出当前循环,继续下一次循环(跳到i++的地方) 列1:求整数1~100的累加值,但要求碰到个位为3的数则停止累加 var sum1=0; for(var i=1;i<=100;i++){ if (i%10==3){ break; } sum1+=i; } console.log(sum1); // 求整数1~100的累加值,但要求跳过所有个位为3的数 var sum=0; for(var i=1;i<=100;i++){ if (i%10==3){ continue; } sum+=i; } console.log(sum);