复合运算符:
1):+=(-=) 就在自身的基础上加(减)多少(n+=1,相当于n=n+1,即自身+1再赋值给自身)
2):*=(/=) 就在自身的基础上乘多少
3): %= 就在自身的基础上模与多少
4):n++(n--) 后自增(减),先进行运算,然后自身+1(-1)
5):++n(--n) 前自增(减),先自身+1(-1),然后进行运算
注意: 在算术运算符里面, 运算符两边的操作数必须是数字
逻辑运算符:
     1):&& 逻辑与(并且)一假则假,表达式只要有一个假,则整个表达式全为假
2):| | 逻辑或(或者) 一真则真,表达还只要有一个真,则整个表达式全为真
3):! 逻辑非 (取反) true变false,false变true
注意:逻辑表达式的结果不只是true或者false
逻辑表达式的短路运算: 在逻辑表达式中, 如果第一个式子就可以决定整个逻辑表达式的结果, 那么第二个式子就不用再计算了, 这个就是逻辑运算符的短路运算
1):逻辑与的短路运算:找假,逻辑与一假则假,因此,如果第一个式子的结果为false, 那么该逻辑表达式的结果就是第一个式子的值, 否则就是第二个式子的值
2):逻辑或的短路运算:找真,逻辑或一真则真,因此。如果第一个式子的结果为true, 那么该逻辑表达式的结果就是第一个式子的值, 否则就是第二个式子的值
3):逻辑非没有短路运算
数据类型的转换:
1):其他数据类型转化为string类型
1):String(变量名)
2):变量名.toString() (如果变量为undefined或者null会报错)
3):变量名 + "" (变量名后面接空字符串)
2):其他数据类型转为number类型
1):parseInt() 把其他数据类型转换成整数类型,偏向于转换字符串
① 从左到右解析,遇到非数字字符, 就停止解析, 输出已经解析出的数字
② 如果第一字符就是非数字字符, 就无法转换, 得到NaN
2): parseFloat() 把其他数据类型转换成小数
① 从左到右解析,遇到非数字字符, 就停止解析, 输出已经解析出的数字
② 如果第一字符就是非数字字符, 就无法转换, 得到NaN
③ 如果第一个字符为小数点,后面字符为数字,则在小数点前面追加0,再把0和小数点后面的数字组合转化为小数
3):Number() 把其他数据类型转换成数字
① 可以把其他数据类型转换成数字类型, 偏向于转布尔类型的数据
② 如果转换的数据里面有任意一个是非数字字符(小数点除外), 那么得到的结果就是NaN
③ 注意undefined转换成数字返回值为NaN,null转化为数字返回值为0
④ 转布尔类型时true 返回1,false返回0
4):在数字前面+
① 跟Number()转换的原理一样, 特点也一样
② 把+ 当做数学里面的正负号来用
        
3):其他数据类型转化为boolean类型 : 转化为false的8种情况 : 0 -0 null undefined false "" NaN document.all
1):console.log(Boolean(0))
2):console.log(Boolean(-0))
3):console.log(Boolean(false))
4):console.log(Boolean(NaN))
5):console.log(Boolean(undefined))
6):console.log(Boolean(null))
7):console.log(Boolean(""))
8):console.log(Boolean(document.all))
     
隐式转换:
1): 转换成字符串 : + 字符串连接符的时候,运算符两边, 只要有一遍是字符串, 那么就会把另外一遍一转成字符串进行拼接
2): 转换成数字 : 自增自减,算术运算符(除+作为字符串连接符以外),+ 除外,两边必须是数字才能进行计算
3): 转成布尔类型 : ! 逻辑非的操作数必须是布尔类型, 计算机自动转换
     
原文:https://www.cnblogs.com/XW-TT/p/12111484.html