前言在javascript语言当中语句的执行顺序有三种:分别是按条件语句执行,按循环语句执行,按上下文的顺序执行
而iif , else if , else
和switch
语句是按条件语句执行,想for
这种循环语句就是按照循环语句执行,而js默认就是按照上下文代码的顺序执行的
if
,else if
,else
判断语句
假设:今天大扫除让(1号-20号)的同学大扫除
var num = 10
让储存变量的10号同学去大扫除
if(num){
console.log("我走进来了")
}//当num值转换成布尔值的时候是真true才能执行花括号中的代码
当条件为假走到另一个分支(条件)
中
if(0){
console.log("条件为 真我走进来了")
}else{
console.log("条件为 假我走进来了")
}
假设:大扫除的时候前20名的同学去扫地
var num = 10
if(0<num<20){
console.log("扫地")
}
为什么0<num<20
为真分析
0<num<20
0<10 --> true
true<20 --> true
0<num<20
0<30 --> true
true<20 --> true
数学中 0<num<20 控制变量的范围 (0,20)
- 数学中
0<num<20
控制变量的num范围(0,20)区间的 - JS中
num>0 && num<20
控制变量num的范围 (0,20)区间(必须&&
两侧都为真true)
假设:大扫除的时候前20-40名的同学去扫地
var num = 30;//控制一个变量应当走到那个代码块中(控制流程)
if(num>0 && num<20){
console.log("扫地")
}else if(num >=20 && num <40){
console.log("上网")
}else if(num>=40 && num < 60){
console.log("拖地")
}else if(num>=60 && num < 80){
console.log("唱跳")
}else{else上面所有条件都不成立的所有情况
console.log("rap")
}(前面的条件都不满足才走到这个条件里来)
if(条件1){
条件1为真,执行的JS代码
}else if(条件2){
条件2为真,执行的JS代码
}else if(条件3){
条件3为真,执行的JS代码
}else{
条件1 2 3 不满足时 执行的JS的代码
}
if
只能有一个else if
可以有许多个else
只能有一个
也可以直接写一个if
如果两个条件都满足该执行那个代码块
var num = 30;
if(num>1){
console.log("if 成立 执行代码")
}else if(num>2){
console.log("else 成立 执行代码")
}
当条件第一次成立的时候就会执行对应的代码当后面的条件或者是后面的条件多次成立时只会执行第一次对应成立的代码块(所有的条件都是互斥的)
如果同时满足多个条件,只会执行第一个条件成立的程序
if
语句 - 只有当指定条件为true
时,使用该语句来执行代码。else if
语句 - 检测一个新的条件,如果第一个条件为false
使用该语句来执行代码。else
语句 如果if
语句或else if
语句 的条件为false
,则执行该代码块if
else
语句在js中用与运算符写,如果同时满足多个条件,只会执行第一个条件成立的程序,
条件的结果最终是为了得到布尔值true
或者false
if
只能有一个else if
可以有许多个else
只能有一个
分清普通对象和js代码块
从js的数据类型角度他是个普通对象(里面没有js语句)
这里面放置了一句或者是多句的js语句那么它是js代码块
三目运算符
三目运算符:简化 if
和else
语句的
var num = 20;
if(num<10){
console.log("烫头")
}else{
console.log("rap")
}
三目运算符:是简化
if
和else
语句的只能简化if else
if(条件){
条件为真 执行的JS代码
}else{
条件为假 执行的JS代码
}
条件?条件为真 执行的JS代码:条件为假 执行的JS代码;
下面的三目是简写成上面的if else
的
简写成三目:
num<10?console.log("烫头"):console.log("rap")
当一个if
里有2个数据该怎么简化成三目
var num = 5;
if(num<10){
console.log("烫头");
console.log("吸烟")
}else{
console.log("rap");
}
简化成三目
num < 50?(console.log("烫头"),console.log("吸烟")):console.log("rap")
//条件为正有2句js代码就不要用三目来简化了
条件?(条件为真 执行的JS代码1,条件为真 执行的JS代码2):条件为假 执行的JS代码;
当if条件为空时怎么用三目来简化
var num = 15;
if(num<15){
}else{
console.log("rap");
}
简化成三目
num<10?null:console.log("rap");
//用null来占位(可以占位的有布尔值转换成false)
条件?占位:条件为假 执行的JS代码;
当else条件为空时怎么用三目来简化
var num = 15;
if(num<10){
console.log("烫头")
}else{
}
简化成三目
num<10? console.log("烫头"):null;
//用null来占位(可以占位的有布尔值转换成false)
条件?条件为真 执行的JS代码:占位;
一般不用布尔值为false
占位的,认识即可
switch判断语句
switch
:控制变量该走哪一个代码块的
var num = 4;
switch(num){
case 2:
console.log('我的学号是2');
break;
case 4:
console.log('我的学号是4');
break;
case 6:
console.log('我的学号是6');
break;
case 8:
console.log('我的学号是8');
break;
case '10':
console.log('我的学号是10');
break;
default:
console.log('我的学号不是 2 4 6 8 10');
}
switch( 变量 ){
case 数据1:
条件成立,执行的JS代码;
break;
case 数据2:
条件成立,执行的JS代码;
break;
case 数据3:
条件成立,执行的JS代码;
break;
default:
上述条件不成立,执行的JS代码
}
case
是场景(可以理解为代码块)- 变量和
case
后面的数据 在判断时 是全等===
为(true
)真才能执行 break
在switch
中的作用是 让程序终止(如果不写则会这块代码块会漏掉像沙漏一样)switch
后面填true
用于区间(灵活写法),后面填变量是固定写法default
所有条件不成立就写default
(默认)
练习
var num = parseFloat('height:20.3px');
-->parseFloat作用:从左往右提取数字,遇到非数字除了(数字,小数点,负号)就会停止
-->遇到了字母h停止了提取-->结果是NaN
if(num==20.3){-->NaN==20.3(NaN和任何数据类型做==判断结果都是false)
console.log(20.3);-->结果是false无法打印
}else if(num==NaN){--> NaN==NaN -->ftyalse
console.log(NaN)-->结果是false无法打印
}else if(typeof num=='number'){
-->1.typeof NaN=="number"
-->2.typeof优先级大于==(相当于typeof NaN)NaN(是一个不是数字的数字)
-->3.”number“=="number"
console.log('number');-->结果是true打印的是number
}else{
console.log('num 什么都不是');
-->当上面的结果都为假(false)时打印此字符串
}