流程控制 主要分为 顺序 选择 循环
顺序结构 从上向下进行
选择结构 根据条件决定执行那一段代码
循环结构 在给定条件成立情况反复执行一段代码 要设置退出机制
//选择结构 if
//如果条件表达式为真 则执行语句块1 否则不执行
/*var age = 20;
if (age > 18) {
console.log("可以上网");
}
//如果条件表达式为真 则执行语句块1 否则 执行语句块2
var age = 3;
if (age > 18) {
console.log("可以上网");
}else{
console.log("不能上网");
}
//多条件语句块 如果都不为真 则执行最后一个else
var age1 = 50
if (age1 > 30) {
console.log("中年人");
}else if (age1 >20 && age1 <30) {
console.log("青年人");
}else{
console.log("小孩纸");
}*/
//if语句 注意点
//1.if()后只管后面一句 记得加大括号
//2.分号“;”也是一个语句 所以 if();不对吼
//3.if 和 else 是一个整体 else 匹配 if时匹配离他最近的if
/*if(0)
if(1){
console.log("A");
}else{
console.log("B");
}else{
if(1){
console.log("C");
}else{
console.log("D");
}
} */ //输出C
//4.对于非Boolean类型 先转为布尔型在判断
//if(1) 即为 if(true)
//判断变量与字面量的问题
// a = 0 是赋值 a == 0才是判断 要时刻牢记
// 所以我们可以写成 0 == a 因为 变量必须在左边 所以 如果写成 0 = a 就会提醒报错
//if语句可以嵌套使用
/*var num = 20;
if (num >= 10) {
if(num <= 30){
console.log("条件满足");
}
}
//另一种写法
if(num >= 10 && num <=30){
console.log("条件满足");
}*/
/*//SWITCH 语句
switch(条件表达式){
case 表达式1:
语句1;
break;
case 表达式2:
语句2;
break;
case 表达式n:
语句n;
break;
default:
语句n+1;
break;
}
*/
//计算条件表达式的值 然后与case中比较
//当条件表达式 与某一语句全等时 === 执行该语句
//都不等 则执行default中语句
/*var number =4;
switch(number){
case 1:
console.log('壹');
break;
case 2:
console.log('贰');
break;
case 3:
console.log('叁')
break;
default:
console.log("其他数字");
break;
}*/
//注意事项
//case 全等于问题
/* var str = "123";
switch(str){
case 123:
console.log("true");
break;
case "123":
console.log("false");
break;
default:
console.log("failed");
}*/
// case 后既可以是字面量 也可以是变量 也可以是表达式
/* var str = "123";
switch(str){
case 123:
console.log("true");
break;
case str:
console.log("false");
break;
default:
console.log("failed");
}*/
//表达式判断问题
//case 后也可以是表达式
/*var str = 123;
switch(100+23){
case 100+20+3:
console.log("true");
break;
case str:
console.log("false");
break;
default:
console.log("failed");
}*/
//case穿透问题
//case只匹配一次
//最后加上break; 否则会继续执行下面的语句
/*var number = 1;
switch(number){
case 1:
console.log('壹');
case 2:
console.log('贰');
case 3:
console.log('叁')
default:
console.log("其他数字");
break;
}*/
//default可以省略 可以写到任何位置
/*var number =4;
switch(number){
case 1:
console.log('壹');
break;
case 2:
console.log('贰');
break;
}*/
/*var number =4;
switch(number){
case 1:
console.log('壹');
break;
default:
console.log("其他数字");
break;
case 2:
console.log('贰');
break;
}
*/
//if 与 switch 中的抉择
//当分支很多而且不能穷尽的时候 用if
//数据量不是很大 并且数据是固定的 那么可以用switch
//理论上switch效率更高
//switch上存在的弊端: 比如 判断用户输入数字是否大于100
//循环语句
//while循环
//格式
/* while(条件表达式){
语句1;
语句2;
……语句n
}*/
//只要条件表达式一直为真 就一直循环
//爱你三千遍
/*var num = 0;
while(num < 3000){
num++;
console.log("爱你"+ num +"遍\n");
}*/
//构成循环结构的条件:
// 循环控制条件(条件表达式) 控制什么时候退出循环
// 循环体{}内的内容 重复执行的代码段
// 循环结束语句(递增,递减,break等) 就是能够让循环条件变假的依据 使退出循环
// while循环注意点
// 一、死循环 while(true){} 循环永远执行
// 二、任何值都有真假性 转为Boolean型在判断 while(1)就是 while(true)
// 三、分号问题 分号也为语句。 while(1);{}整段垮掉
//break 和 continue 的使用
//跳出switch 有用到
//跳出循环
/* while("健身"){
console.log("跑步");
if ("腿抽筋了") {
break;
}
console.log("有氧");
console.log("无氧");
}*/
/*var num = 0;
while(true){
console.log(num);
if (num === 3) {
break;
}
num++;
}*/
//break只在循环语句和switch语句中有意义
//在多层循环中 一个break语句只向外跳一层
/*while(1){
while(2){
console.log("hello");
break;//跳出while(2) 但是仍然在while(1)中
}
console.log("goodbye");
}*/
//break后的语句不会执行
/*while(1){
alert("goodbye");
break;
alert("hello");
}*/
/* while("健身"){
console.log("跑步");
if ("腿抽筋好了") {
continue;
}
console.log("有氧");
console.log("无氧");
}*/
//continue 跳过当前循环体中的剩余语句 开始下一次的循环
/*var num = 0;
while(num < 10){
num++;
if(num % 2 ===0){
continue;
}
console.log(num);
}//会输出 1 3 5 7 9*/
//输出10以内3的倍数
/*var num = 0;
while(num <= 10){
num++;
if(num % 3 !== 0){
continue;
}
console.log(num);
}*/
//do while语句
//格式
// do{
// 语句1;
// 语句2;
// ……
// 语句n
// }while(条件);
// 首先会执行一次循环体中的语句
// 在判断条件表达式为真 真的话再次循环
// 重复直到条件表达式为 false
/*var num = 10;
do{
console.log("hello");
}while(num > 10);*/
//特点 不管条件是否成立总运行一次
//应用场景 口令校验
//for循环
//for循环运用最为灵活 不仅可以用于循环次数确定的 而且也可以用于循环次数不确定 只给出循环结束条件的情况
//格式
/*for(①初始化表达式;②循环条件表达式;④循环后操作表达式)
{
③执行语句;
}*/
//for循环执行流程
// 开始的时候 先执行初始化表达式 整个循环中只执行一次
// 然后判断循环条件表达式是否为真 为真可是循环
// 循环体执行结束 执行循环化操作表达式
// 再次判断循环条件表达式是否为真 真开始新的循环
// 重复上述过程 直到条件不成立
//爱你三千遍
/*for (var i = 1; i <= 3000; i++) {
console.log("爱你"+i+"遍\n");
}
*/
//for 和 while 的抉择
//一般可以互换 如果循环完毕之后不需要使用用于控制循环的增量 那么for更好
// 循环次数不固定时
//for注意事项
// 可以for( ; ; ){} 三个表达式可以不写 相当于 while(1) 其他注意点 跟while差不多
//用for打印好友列表
/* 好友列表1
好友1
好友2
好友3
好友列表2
好友1
好友2
好友3*/
/* for (var i = 1; i <= 2; i++) {
console.log("好友列表" + i);
for (var j = 1; j <= 3; j++) {
console.log(" 好友" + j);
}
}
*/