二 js中的三个特殊数据 NaN null undefined
1 NaN:非法的数值运算得到的结果
1 特殊之处
1 是一个数值型的数据,但是不是一个数字
2 NaN不等于任何值,和任何数据都不相等,NaN不等于NaN
2 检测方法:isNaN(要检测的结果)
1 true :检测结果为NaN或能转成NaN
2 false :检测结果不是NaN或不能转成NaN
3
2 undefined:为赋值,类型是undefined;
null:是空,类型是object
1 特殊点1:undefined和null在关系运算符两边隐式转换类型后,得到了一致的数据
2 特殊点2:undefined被Number转成NaN,null被Number转成0
3 如何分辨三个特殊值?
1 NaN可以使用 isNaN() 判断
1 isNaN(要判断的值或变量)
var a = NaN;
console.log( isNaN(a) ); //结果是布尔值:true为是的 ;false为不是。
2 undefined可以使用 typeof 判断
1 typeof要判断的值或变量
var b = undefined;
console.log( (typeof b) === "undefined" ); // 结果是布尔值:true为是的,false为不是
3 Null需要配合 typeof 和 关系运算符 判断
1 typeof要判断的值或变量===“object” ;
var c = null;
console.log( (typeof c) === "object" );
还需要( && ) 要判断的值或变量 == null
console.log(c === null);
三 逻辑分支(选择结构,分支结构)
1 程序的三大结构
1 顺序结构
1 代码逐行执行,一行一行自上而下执行
2 分支结构
1 有选择,十字路口的选择,只能选择一个(if else) ;如果,否则。
3 循环结构
重复执行多次的结构。
2 什么是分支结构
例 :听懂的扣1:看到了1,继续讲课;
不懂的扣2:看到了2,重新讲一遍。
3 分支语句
1 分支和循环结构,需要配合一些代码来实现,专用代码叫 :语句
2 if :单分支
If(条件){执行语句}
3 if else:双分支
1 if(条件){条件为true时,要执行的语句}
Else{条件为false时,要执行的语句}
2 分支的嵌套(双分支模拟的多分支)
1 在执行体内,可以继续执行其他分支
2 if(条件1){
else if(条件2){
else if(条件2){
else … …
}
}
}
3 if的小括号里面也会发生隐式类型转换规则
1 规则 :其他转布尔
1 数值转布尔:非0为true; 0为false
2 字符转布尔:非空字符,为true; 空字符,为false
3 对象转布尔:对象为true
4 数组转布尔:数组为true
5 函数转布尔:函数为true
6 特殊数据转布尔:undefined,NaN,null都为false
4 switch:多分支
1 语法:
var n = 2;
var msg = "";
switch(Number(n)){
case 0:
msg = "星期日";
break;
case 1:
msg = "星期一";
break;
...
default:
msg = "你输入的数字不对,请输入0~6之间的数字";
}
console.log(msg);
2 规则:
1 当要判断的值是固定的数据时,选择使用switch
5 如果要判断的值是范围时,选择使用if-else
1 switch的case判断,不存在隐式类型转换
2 某些情况下,需要根据场景,选择是否需要主动转换
3 如果你不管上面的使用建议,非要使用switch判断范围,麻烦
1 使用switch判断范围
例:
var cj = 45;
switch( true ){
case cj<60:
console.log("不及格");
break;
case cj>=60 && cj<70:
console.log("及格");
break;
default:
console.log("以上case都没执行");
}
```
2 某些问题需要利用switch的case的穿透特性,解决(以后讲)