比较运算符
>、<、>=、<=、==、!=、===
注意:
==两个等号在比较数据是否相等的时候,还会进行隐式数据类型转换(就是js自动给你转成相同的类型来进行比较。
=== 值和类型都要进行比较,如果有一个不相等,那么就返回false
问:=,==(等于),===(绝对等于)区别是什么?
=是赋值,==,与===参考上面
问:!=(不等于),!==(完全不等于)区别是什么
和==,===同理
强制数据类型转换
转数值 Number()
- 注意1:number是数据类型 Number()强制数据类型转换
- 注意2: NaN本身就是一个数值
- 注意3:非纯数字转数值类型结果为NaN
- 注意4: 空字符串或只有空格字符串转数值类型结果为0
- 注意5:boolean类型转数值false为0,true为1
- 注意6:undefined转数值为NaN,null转数值为0
问:NaN == NaN 和 NaN === NaN 它的结果分别是什么?
NaN不是一个固定的数值,不是由相同非数字转过来的,表示所有非数字类型,输出NaN == NaN 和 NaN === NaN 它的结果分别false false
问:typeof typeof 10 请问结果是什么?
console.log(typeof 10 == 'number') //结果 true
console.log(typeof typeof 10) //结果为 string
转字符串 String()
var 声明的值要覆盖后面的,要分开写
var data = Infinify //Infinify表示无穷大
var res = String(data)
var data = false
var res = String(data)
var data = undefined
// var data = null
var res = String(data)
还有一个toString()方法:可以先进行进制转换
var num = 10
// var res = num.toString(2) // 1010
// var res = num.toString(8) // 12
var res = num.toString(16) // a
转布尔 Boolean()
- 注意1:把0和NaN转成布尔值结果是false,其他的都是true
- 注意2:把空字符串转成布尔类型结果是false
- 注意3:把undefined和null转成布尔类型结果都是false
隐式数据类型转换
概念:JS会根据运算符自动帮我们将数据类型转换成能够进行计算的类型
第一种情况:
1.字符串加数字,数字就会转成字符串
2.数字减字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。字符串减数字也一样。两个字符串相减也先转成数字
3.乘,除,大于,小于跟减的转换也是一样
第二种情况:
1.undefined等于null
2.字符串和数字比较时,字符串转数字
3.数字和布尔比较时,布尔转数字
4.字符串和布尔比较时,两者转数字
注意:如果把加号放在字符串前面,那么会默认把字符串转成数值类型
问:0.1 + 0.2 = 0.3 对吗
不对,存在计算精度问题:因为二进制在保存小数的时候存在精度丢失的问题,对于有些小数存储来说(有时候是多的,有时候是缺少的
console.log(0.1 + 0.2) // 结果 0.30000000000000004
这时候要用toFixed() 取小数位,也会进行隐式数据类型转换
console.log((0.1 + 0.2).toFixed(2) == 0.3) // true
提取整数和浮点数
- parseInt() 提取整数,如果遇到非整数的时候会停止,会默认进行数据类型转换
- parseFloat() 提取浮点型,如果遇到非浮点型的时候会停止,会默认进行数据类型转换
逻辑运算符
声明下逻辑运算符的运算结果有两个:true或false
-
&& 逻辑与(也可以叫并且)。如果左右两个操作符都为true,则结果为true,否则,结果为false,逻辑与,就是两个条件同时满足时,结果为true
-
|| 逻辑或。左右两个条件,只要一个满足,就返回true,否则,就返回false
-
! 取反运算
流程控制三大结构
顺序结构
按照程序的书写顺序,一条一条语句执行,不允许跳过任何一条语句
选择(条件)结构
这种先根据条件做出判断,再决定执行哪一种操作的结构称为分支结构,也称为选择结构
a、if单分支选择结构: if条件判断----只判断true,不判断false
if() {//圆括号里面条件判断,结果只要两个true或false
//大括号中,是条件为true时,将执行的程序代码
}
自己练习一下
b、if else双分支选择结构:
语法结构-----既判断true,又判断false
if(条件判断:结果只有两个true或false)
{
条件为true,将执行该代码
}else
{
条件为false,将执行该代码
}
自己练一下
c、if else if多分支选择结构:
语法结构——多条件判断
if(条件1)
{
代码1
}else if(条件2)
{
代码2
}else if(条件3)
{
代码3
}else
{
如果以上条件都不成立,则执行该代码
}
三元运算符
语法:
? : 也叫三目运算符
语法:条件表达式?结果1:结果2
语法:操作数1?操作数2:操作数3
switch多分支结构
描述:根据一个变量的不同取值,来执行不同的代码。
注意事项:case在进行值比较时,是以全等于来比较匹配的。
switch(条件判断)
{
case 值:1;
代码1;
break;
case 值:2;
代码2;
break;
case 值:3;
代码3;
break;
default:
如果以上条件都不满足,则执行该代码
}
switch、case、break、default都是系统关键字,都必须全小写
注意: 每个case中的代码执行完毕后,必须用break语句结束。如果不写break语句的话,下面的所以的case语句都会执行一遍。
自己练一下