JS分支语句0312
if判断的基本语法形式
-
if( 表达式 ){执行程序}
当表达式的结果为true,执行程序
当表达式的结果为false,没有执行程序 -
if(表达式){程序1}else{程序2}
当表达式 结果为 true , 执行 程序1
当表达式 结果为 false, 执行 程序2 -
if(条件1){程序1}else if(条件2){程序2}else if(条件3){程序3}…
当满足条件1,执行程序1,
当满足条件2,执行程序2…
满足哪个条件就执行哪个条件的程序
判断的顺序是从上至下,如果满足了第一个条件,之后的条件都不会再判断和执行
最终只会执行一个程序
如果所有的条件都不满足,是没有执行内容的 -
if(条件1){程序1}else if(条件2){程序2}else if(条件3){程序3}…else{}
从第一个条件开始判断,满足那么个条件就执行对应的程序
满足当前条件之后,执行对应的当前程序,之后的else if(),else 不会执行
如果所有的条件都不满足,会执行 else 中的程序
if语句,写判断条件时,要注意边界值的设定
成绩输出
// 根据成绩输出 内容
// 定义一个随机数,生成的数值是 1-100范围之内的随机整数
var res = parseInt(Math.random()*100+1);
// console.log(res);
// 程序执行从第一个条件来判断,判断res == 100
// 如果满足条件执行执行程序
if(res == 100){
console.log(`恭喜您考取的${res}分,获得最强王者称号`);
// 当我们进入到第二个条件时,一定是第一个条件不满足
// 也就是 满足 大于 90的条件 但是 一定不会是 100
// 如果是100,就执行了第一个条件
}else if(res >= 90 ){
console.log(`恭喜您考取的${res}分,获得星耀称号`);
// 当执行到第三个条件时,第一个和第二个条件一定是不满足的
// 此时就保证这个数值 是 小于 90的
}else if(res >= 80 ){
console.log(`恭喜您考取的${res}分,获得钻石称号`);
}else if(res >= 70 ){
console.log(`恭喜您考取的${res}分,获得铂金称号`);
}else if(res >= 60 ){
console.log(`恭喜您考取的${res}分,获得黄金称号`);
}else if(res < 60 && res >= 0){
console.log(`恭喜您考取的${res}分,这个游戏不适合你,还是删除了吧`);
// 一般else 做容错处理
}else {
console.log('您的考试成绩有误,请您在好好瞅瞅')
}
总结
- if语句()中的条件,可以根据项目需求做调整,只要能实现项目需求,爱怎么写怎么写
- else 一般做容错处理,当有非负数据参与执行,我们执行else的程序
- else 之后没有(),没有条件,不要多加内容
switch语句
switch语句也是判断语句形式的一种;功能与if判断基本相同,只是使用环境不同。
if语句,往往做比较判断,判断是范围;逻辑运算符,使用if语句做判断。
switch 判断等于,某个具体数值时,我们使用switch语句
switch的执行效率高于if判断
switch一定能写成if,但是有些if不适合写成switch
// 有商品编号 1-5 5种商品 , 根据不同的商品编号,输出商品信息
var num = parseInt(Math.random() * 5 + 1);
if (num == 1) {
console.log(`随机数是${num},输出的是第一种商品的信息`);
} else if (num == 2) {
console.log(`随机数是${num},输出的是第二种商品的信息`);
} else if (num == 3) {
console.log(`随机数是${num},输出的是第三种商品的信息`);
} else if (num == 4) {
console.log(`随机数是${num},输出的是第四种商品的信息`);
} else if (num == 5) {
console.log(`随机数是${num},输出的是第五种商品的信息`);
} else {
console.log('您输入的商品编号有误,无法查询对应的商品信息');
}
// 如果判断是否等于某个值,例如 5
// 需要从第一个条件开始执行判断,执行到5,要多判断4次 false
// 如果判断较多,执行效率就会比较低
// 此时就推荐使用 switch 语法
// switch 是 根据变量的数值,来进行定位
// 如果 num 数值是5,直接定义到5,执行对应的程序内容
// 不会做过多的判断,效率就比if判断的效率高
/*
switch(变量){
case 变量的数值1:
执行的对应的程序1
break;
case 变量的数值2:
执行的对应的程序2
break;
case 变量的数值3:
执行的对应的程序3
break;
..... 可以无限写
default
执行的对应的程序
break;
}
case 是变量对应的数值,要执行的对应程序
对于数值的判断,执行的 === 严格比较 / 全等判断
defalut 对应的是 if语句中的 else
也就是当变量的数值,不满足所有的 case 时 , 执行的程序
break 终止语句
swith默认会从定位的位置开始,执行之后所有的程序
除非遇到break关键词,才会终止程序的执行
因此,每一个case的定位,每一种执行情况,都要配合一个break 做终止
防止程序执行的冲突
最后一个程序,可以不加 break,加不加,看个人习惯
*/
switch (num) {
case 1:
console.log(`随机数是${num},输出的是第一种商品的信息`);
break;
case 2:
console.log(`随机数是${num},输出的是第二种商品的信息`);
break;
case 3:
console.log(`随机数是${num},输出的是第三种商品的信息`);
break;
case 4:
console.log(`随机数是${num},输出的是第四种商品的信息`);
break;
case 5:
console.log(`随机数是${num},输出的是第五种商品的信息`);
break;
default:
console.log('您输入的商品编号有误,无法查询对应的商品信息');
break;
}
if判断 和 swith判断
if判断 : 多用于 判断范围 逻辑表达式 判断的嵌套
swith判断 : 全等判断 swith穿越
// 随时获取月份 , 输出当月是多少天
// 随机生成1-12的随机数
var month = parseInt(Math.random()*12+1);
if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12 ){
console.log(`现在是${month}月,这个月有31天`);
}else if(month == 4 || month == 6 || month == 9 || month == 11){
console.log(`现在是${month}月,这个月有30天`);
}else if(month == 2){
console.log(`现在是${month}月,这个月有28天,如果是闰年,是29天`);
}else{
console.log('您的月份输出错误,您过的是地球的日子吗?');
}
swith判断的穿越语法
如果定位是满足第一种情况,会从定位位置,一直向下执行,输出内容,遇到break再停止
// 也就是 month 等于 1.3.5.7.8.10.12 时,最终穿越到,相同的程序执行
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
console.log(`现在是${month}月,这个月有31天`);
break;
case 4:
case 6:
case 9:
case 11:
console.log(`现在是${month}月,这个月有30天`);
break;
case 2:
console.log(`现在是${month}月,这个月有28天,如果是闰年,是29天`);
break;
default:
console.log('您的月份输出错误,您过的是地球的日子吗?');
break;
}
随机数
在JavaScript中,有自己生成随机数的语法
与PHP,Python,Java都不同
Math.random() 随机生成 0-1的小数,可以是0,永远不会是1
console.log( Math.random() );
一般使用时,都是生成一个随机整数
有生成随机整数的公式
parseInt() 获取数值的整数部分
如果需要生成数值的范围是 a - b 那么公式是
随机数*(b+1-a) + a
结合起来 parseInt( Math.random() * (b+1-a) + a )
// 例如要 生成 10 - 20 之间的整数 , 可以 取到10 和 20
// parseInt( Math.random() * ( 20+1-10) + 10 )
console.log( parseInt( Math.random() * ( 20+1-10) + 10 ) )
计算机的三大流程控制语句
顺序控制语句;
计算机程序的默认执行顺序从上至下,从左至右
分支控制语句
if switch
根据条件判断的结果,执行程序
那么没有执行内容,要么只有一种执行结果
循环控制语句
while for for…in forEach
据给定的循环条件来循环往复的执行程序
while循环语句
基本语法:
循环语句的基本语法格式 由 4 部分组成
-
设定循环变量的初始值
-
判断进入循环的条件
-
循环体
-
步长
var i = 1; while(i <= 5){ console.log('你好!'); i++; } console.log(i) // 当循环执行时,只有第一次循环时,执行var i = 1 // 之后的循环,是 while 程序内部的循环, 判断条件,循环体,步长之间的循环 // var i = 1; 只会执行一次
// while 循环的 执行步骤 和 执行原理
// i的数值 判断进入循环的条件 循环体 步长
// 第一次循环 i是1 i<=5 — true 进入循环 输出 i++ — i是2
// 第二次循环 i是2 i<=5 — true 进入循环 输出 i++ — i是3
// 第三次循环 i是3 i<=5 — true 进入循环 输出 i++ — i是4
// 第四次循环 i是4 i<=5 — true 进入循环 输出 i++ — i是5
// 第五次循环 i是5 i<=5 — true 进入循环 输出 i++ — i是6
// 第六次循环 i是6 i<=5 — false 不再进入循环,整个循环终止
// 一共执行了5次输出,在第六次循环时终止
// 当循环停止是, 循环变量 i 是
总结:
循环语句分成 4个部分
-
定义循环变量的初始值
通过循环变量的数值和判断进入循环的条件,来定义循环的次数 -
定义判断进入循环的条件
如果 条件 执行结果是 true , 会进入循环 { } 执行循环体内容
如果 条件 执行结果是 false , 终止循环,整个循环结束 -
循环体
没次循环执行的程序内容 -
步长
每次执行,循环变量改变的数值// 循环执行的步骤 过程 // 12(true)34 - 2(true)34 - 2(true)34 - 2(false)终止循环 // 1, 如果我们的循环变量,不参与循环体的程序执行 // 那么循环变量和步长,可以任意设定,只要能满足输出次数即可 // 例如,要输出5次,张老师帅呆了 // var i = 101; // while(i<=110){ // console.log("张老师,帅呆了"); // i+=2; // } // 2,实际操作中,循环变量 i 往往要参与循环体的执行 // 此时 循环变量初始值的设定 和 步长 就要满足条件 // 现在要输出 1-10 的数值 // i的数值 判断条件 循环体 步长 // 第一次 i是1 i<=10---true 输出i,也就是1 i++ --- i是2 // 第二次 i是2 i<=10---true 输出i,也就是2 i++ --- i是3 // 第三次 i是3 i<=10---true 输出i,也就是3 i++ --- i是4 // ....... // 第十次 i是10 i<=10---true 输出i,也就是10 i++ --- i是11 // 第十一次 i是11 i<=10---false 终止循环 // var i = 1; // while(i <= 10){ // console.log(i); // i++; // } // 3, 循环和if的配合 // 输出 1 - 10 中 , 所有的偶数 // 思路1: 循环生成1-10的所有整数 // 然后判断 这个数值是否是 偶数,如果是,执行输出,如果不是没有操作 var i = 1; while(i <= 10){ // 嵌套在循环{ } 中的 if判断 // 这个if判断,也是循环体的一部分 // 每次循环,if判断也会执行 // 如果这个循环变量 i 的数值 可以被 2整除,也就是 此时的i 是偶数 // 就执行输出 // 否则就直接执行 步长 i++ 没有输出内容 if(i % 2 == 0){ console.log(i + '是偶数'); } i++; } // 总结,这种思路,会循环10次,执行10次判断,5次是true,有输出,5次是false没有输出内容 // 思路2:优化程序 // 思路1:是生成1-10的所有数值,判断是偶数输出 // 思路2:可以直接生成1-10的偶数,直接输出,循环次数少,并且还不用判断,效率会提高---程序优化 // 所谓的偶数,相邻的两个偶数相差是2,偶数之间,步长是2 // 只要找到第一个偶数,将步长设定为2,获取到的就都是偶数了 // 1-10之间,第一个偶数是2 , 步长是 2 也就是 i+=2 var i = 2; while(i <= 10){ console.log(i); i+=2; } // 输出 1-100 中 可以被 2和3,整除的数值 // 思路1: 循环生成 1-100所有的数值 // 如果当前数值可以被2和3整除,就输出这个数值 var i = 1; while(i <= 100){ if(i % 2 == 0 && i % 3 == 0){ console.log(i + '可以被2和3整除'); } i++; } // 思路2,可以被2和3整除,也就是可以被6整除 // 相邻的两个数值,步长是6 // 找到第一个被2和3整除的数值,并且设定步长是6,就可以循环生成所有需要的数值 // 就不想要判断,可以直接输出 // 1--100,第一个可以被2和3整除的数值是6 var i = 6; while(i <= 100){ console.log(i); i += 6; }
死循环
所谓的死循环值的是,循环会一直判断进入条件,判断结果一直是true
循环也就是会一直执行,不会停止
这样的循环称为死循环
// var i = 1;
// while(i <= 10){
// window.alert(i);
// i--;
// }
for循环
所谓的for循环,是完全等价于 while 循环
任何一个for循环都可以写成while循环,任意一个while循环,也可以写成for循环
while循环和for循环,都有各自的应用场景
如果是: 未知循环次数的 循环程序,往往使用while循环来执行
所谓的未知循环次数,指定是,判断进入循环的条件与循环变量无关
// demo
// 生成一个随机的3位数 100 - 999
// 需要生成数值 666 , 看随机多少次,获取到的666
// 实现的思路 : 循环执行 随机数 每次循环都会有一个新的随机数的生成
// 当这个随机数,不是 666 的时候,继续进入循环,生成新的随机数
// 当这个随机数,是 666 的时候,停止循环
// 初始时,初始值只要不是666,可以进入循环即可
var num = 0;
// 定义一个变量,来计算循环的次数
// 这个变量的初始值 是 0
var time = 0;
// 此时判断进入训话的条件是 num 中存储的数值
// 循环变量,和循环变量的步长,与 循环执行,就没有关系了
while( num != 666 ){
// 通过循环,赋值一个随机3位数
num = parseInt(Math.random()*(999+1-100) + 100 );
// 每次循环,记录训话次数的变量,自增1,表示循环过一次
time++;
}
// 循环执结束,num 中 存储的数值,就是666
console.log(num);
console.log(time);
上一篇: JS函数 0316