2、流程语句
流程语句
三大流程语句
1、顺序结构
2、条件/选择/分支
3、循环
1、顺序结构:
概念:从上朝下执行的代码就是顺序
例子:num1 = 10; num2 = 20; 这两个数的位置进行交换。
var num1 = 10;
var num2 = 20;
// 中间变量
var tmp = num1;
num1 = num2;
num2 = tmp;
alert("num1: " + num1 + "num2: " + num2);
2、条件/选择/分支
if 语句
/*
单分支语句
格式:
if(判断条件)
执行语句;
究极版本:
if(判断条件){
执行语句;
...
}
功能:如果if中判断条件为true,就直接去执行紧跟着if语句后面的一条语句,否则如果为false,就不去执行紧跟着if语句后面的这条语句。
【注】if语句仅能控制它后面的一条语句是否能被执行。
大括号:
{}
作用:使用大括号,括起来的多条语句,可以当做一条语句去执行。
*/
/* var num = 7;
if(num % 2 == 0){
alert("这是一个偶数");
alert(1);
}*/
/*
求两个数的最大数
*/
/*var num1 = 10;
var num2 = 20;
if(num1 > num2){
alert(num1);
}
if(num1 < num2){
alert(num2);
}*/
/*var num1 = 10;
var num2 = 20;
if(num1 > num2){
alert(num1);
}else{
alert(num2);
}*/
/*
双分支语句
格式:
if(判断条件){
判断条件true,执行语句;
}else{
判断条件false, 执行语句;
}
*/
/*var num = 7;
if(num % 2 == 0){
alert("这是一个偶数");
}else{
alert("这是一个奇数");
}*/
/*
多分支语句
格式:
if(判断语句1){
执行语句1;
}else if(判断语句2){
执行语句2;
}...
else{
当上述条件都不成立的时候执行;
}
*/
/*var x = 11;
var y = 0;
if(x < 1){
y = x;
}else if(x >= 1 && x < 10){//1<=x<10
y = 2 * x + 1;
}else{
y = 5 * x - 17;
}
alert(y);*/
/*
闰年
1、能被400整除
2、能被4整除但是不能被100整除
*/
3、switch多分支语句
/*
多分支语句
格式:
switch(表达式){
case 值1:
执行语句1;
break;
case 值2:
执行语句2;
break;
...
default:
上述所有条件都不符合,执行这里;
break;
}
流程:++判断表达式的结果,和case后面值进行匹配,匹配成功以后,执行该值对应的执行语句。++
1、如果判断结果是确定的值,优先使用swtich语句。
2、swtich语句运行效率比if语句的运行效率高。
注意:
1、break一定不能省略,事件会被穿透。
2、default必须要写。
*/
/* var grades = "E";
switch(grades){
case "A":
alert("80~100");
break;
case "B":
alert("70~80");
break;
case "C":
alert("60~70");
break;
case "D":
alert("<60");
break;
default:
alert("error");
break;
}*/
练习:利用case穿透简化代码
/*
2.输入月份,显示当月的天数
要求:1) 利用 case穿透简化代码
*/
var month = 2;
var year = 2018;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
alert("31天");
break;
case 2:
//判断是否是闰年
if(year % 400 == 0 || year % 4 == 0 && year % 100 != 0){
alert("29天");
}else{
alert("28天");
}
break;
default:
alert("30天");
break;
}
4、三目运算符
/*
三目运算符
格式:
表达式1 ? 表达式2 : 表达式3;
功能:先去判断表达式1是否为true,如果为true,执行表达式2,否则执行表达式3。
*/
/*var num = 9;
num % 2 == 0 ? alert("这是一个偶数") : alert("这是一个奇数");*/
/*if(num % 2 == 0){
alert("这是个偶数");
}else{
alert("这是个奇数");
}*/
5、循环语句
/*
循环
while 循环
do while 循环
for 循环
*/
/*
1、while循环
格式:
while(循环条件){
循环语句;
}
功能:先去判断循环条件是否成立,如果成立执行循环语句,知道循环条件不成立的时候,循环终止。
*/
/*
1 ~ 100的和
*/
var i = 1;
var sum = 0;
while(i <= 100){
sum += i;
i++; //每一次循环,都会进行+1操作。
}
alert(sum);
document.write("1<br />2");
习题
/*
1、打印100以内 7的倍数
2、打印100以内的奇数
3、打印100以内所有偶数的和
4、打印图形
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
*/
/*
【注】小心造成死循环
*/
/*var i = 1;
var sum = 0;
while(i <= 100){
// if(i % 7 == 0){
// document.write(i + "<br />");
// }
if(i % 2 != 0){
document.write(i + "<br />");
}else{
sum += i;
}
i++;
}
alert(sum);*/
var i = 1;
while(i <= 40){
document.write("*");
if(i % 10 == 0){
document.write("<br />");
}
i++;
}
/*
2、do...while循环(了解)
格式:
do{
循环体
}while(循环条件);
【注】最后一定要加分号,会有出错隐患
【注】不管循环条件是否成立,先去运行一次再说。
*/
var i = 1;
var sum = 0; //用于记录累加的和
/*do{
sum += i;
i++;
}while(i <= 100);*/
// alert(sum);
/*while(i <= 100){
sum += i;
i++;
}
alert(sum);*/
var i = 5;
while(i > 10){
alert("while");
}
do{
alert("do while");
}while(i > 10);
/*
【总结】1、循环条件仔细斟酌。(经验,慢慢来)
2、代码规范
3、运算符前后+空格,逗号、分号还有别的语句,加一个空格。
*/
/*
3、for循环
格式:
for(表达式1; 表达式2; 表达式3){
循环语句;
}
功能:
1、先去执行表达式1,有且只执行一次。
2、判断表达式2,如果true,执行循环语句,否则终止
3、执行表达式3,再去判断表达式2,重复2,3操作。
*/
// 1 ~ 100和
/*
表达式1:循环初始变量
表达式2:循环条件
表达式3:累加
*/
/*var i = 1;
var sum = 0;
while(i <= 100){
sum += i;
i++;
}*/
var sum = 0;
for(var i = 1; i <= 100; i++){
sum += i;
}
alert(sum);
/*
for循环使用频率是最高的。
*/
练习
打印三角形:
/*
习惯上是从0开始的。
循环的时候,初始值也要从0开始。
*/
/*
1、打印五行
半角 占一个字符的大小
  全角 占一个汉字的大小 = 两个半角
【注】循环变量 i j k
*/
for(var i = 0; i < 5; i++){
//打印# 总行数 - 当前圆圈数
for(var k = 0; k < 5 - i - 1; k++){
document.write("#");
}
//2、打印当前圆圈的个数打印出来 ○
for(var j = 0; j <= i; j++){
document.write("○");
}
document.write("<br />");
}
/*
5行
第0行 4个空格 1个圆圈
第1行 3个空格 2个圆圈
*/
break与continue
/*
对于switch break 防止条件语句穿透。
*/
/*
循环中
break:
功能:终止当前循环,只能终止当前一层循环。
continue:
功能:跳过这次循环,直接入下一次循环。
*/
/*
当循环到5,结束循环
*/
/*for(var i = 0; i < 100; i++){
if((i + 1) == 5){
break;
}
document.write((i + 1) + "<br/>");
}*/
for(var i = 0; i < 100; i++){
if((i + 1) == 5){
// break;
continue;
}
document.write((i + 1) + "<br/>");
}
死循环 与 不规范循环写法
/*
死循环 停不下来
【注】循环条件永远成立。
*/
/*while(true){
}*/
/*while(1){
}*/
/*for(;;){
}*/
/*
不规范的for循环
*/
for(var i = 0; i < 100; i++){
}
var i = 0;
for(; i < 100; i++){
}
var i;
for(i = 0; i < 100; i++){
}
for(var i = 0; i < 100;){
i++;
}
补充
/*
赋值运算符
= 赋值
被赋值的变量 = 表达式;
关系运算
== != ===(全等/恒等)值和数据类型都相等 !==
基本数据类型:
number: 数字
string: 字符串
boolean: 布尔值
null
*/
var num = null;
var num = 0;
/*
switch语句 更侧重于匹配
if 语句 更侧重于判断
*/
/*
【注】问问题一定要具体到问题的某一个点。
*/
打印一行五个数,五行
var tmp = 1;
for(var i = 0; i < 5; i++){
//循环五次打印五个数
for(var j = 0; j < 5; j++){
document.write(tmp + " ");
tmp++;
}
document.write("<br />");
}
习题
/* 1、输入年月日,输出当前年第几天。
2018.05.17
month
*/
var year = 2018;
var month = 5;
var date = 17;
var currentDay = 0;
switch(month){
case 12:
currentDay += 30;
case 11:
currentDay += 31;
case 10:
currentDay += 30;
case 9:
currentDay += 31;
case 8:
currentDay += 31;
case 7:
currentDay += 30;
case 6:
currentDay += 31;
case 5:
currentDay += 30;
case 4:
currentDay += 31;
case 3:
currentDay += 28;
case 2:
currentDay += 31;
case 1:
currentDay += date;
break;
default:
alert("error");
break;
}
if(month > 2){
//判断闰年
}
alert(currentDay);