一. 一元操作符
只能操作一个值的操作符
1. 递增和递减的操作符
var a = 10;
1)++a; //11
--a; //10;
如果:
c = ++a - 1; //10
a //11
a先进行++的操作,后再-1,所以c=11-1=10,a=11;
2)a++; //11
a--; //10;
如果:
c = a++ - 1; //9
a //11
a先进行-1,所以c=10-1=9;这个操作结束后a进行了+1操作,a=11;
在进行++或--操作时,会对非数值进行转换,例如true转化为1,false转化为0;
var s1 = "2";
s1++; //先将“2”变为2,再加加,3
var s2 = "p";
s2++; //“p”转化不成数值,NaN
2. 一元减和加操作
var a = 1;
a = +a //1
a = -a //-1;变成了负数
+不会进行加操作,但是可以进行数据类型转换
c= +true //1
number与字符串相加还是字符串
~ 相减 是数字
5 + "o2" //"5o2"
5 + "1" //51
5 - "u2" //NaN
5 - "1" //4
二. 关系操作符
小于< 大于> 小于等于<= 大于等于>=
如果两个操作数中有一个是数值,则另一个也要变为数值比较
如果两个操作数都是字符串,则比较字符编码值(例如a为97,b为66)
例如:“23”<”3”//true 2的编码为50,3的编码为51
“23”<3 //false 因为“23”转化为23
NaN不论和谁比较都是错的
三.相等操作符
==和!=会先将两则转化为类似的类型(强制转型),再比较
===仅比较不转换
1.相等和不全等
在转换不同的数据类型的时候的原则:
1)如果其中一个操作数是布尔值,比较前true为1,false为0
2)如果其中一个是字符串,另一个是数字,则将字符串转化为数字
比较的时候原则:
1)null与undefined相等
2)在比较相等性前,不能将null和undefined转化为任何值
3)NaN与任何的都不相等,包括其本身
4)判断两个对象时,比较的是他们是不是同一个对象,
2.全等和不全等
===为不强制转换的情况下比较,数据类型相同,数值一样才相等
例如 “55”==55 //true
"55"===55 //false,数据类型不同
"55"!=55 //false
"55"!==55 //true
四.三目运算
var a = (b>c)?b:c;
如果b大于c,则a=b否则a=c;