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);