操作符
一、算术运算符
+= +:
+ :a+b
1.均为number类型,直接计算
2.如果a,b不是number类型,并且不是string或者object类型,将当前变量转化为number类型进行计算
3.只要其中有一个变量为string类型,另一个变量转化为string类型,直接进行字符串拼接(如果另一个为object类型,默认调用toString() )
var a=10;
var b="hello";
sum=a+b;
console.log(sum); //10hello
4.一个变量为object类型,另一个不为string类型,将另一个进行数据类型转化,转化为number,调用object中的valueOf/toString进行计算(默认调用toString方法,当只重写toString(),调用toString();当只重写valueOf(),调用valueOf();两个都重新时,调用valueOf() )
var o1={
name:"zhangsan",
age:20,
valueOf:function(){ //重写valueOf函数
return 23
},
toString:function(){ //重写toString函数
return 300
}
}
o2=null;
sum1=o1+o2;
console.log(sum1);
+= : a+=1—>a=a+1
-= -
*= *
/= /
%= %
二、比较运算符:返回值为布尔类型
1.<
2.>
3. >=
4. <= :a>b
如果a,b不为number类型,将a,b转化为number后比较
如果两个变量均为string类型,直接进行比较字符编码
5.=:赋值操作符
var a=10; 从右向左赋值
6.相等比较
a==b
如果均为number,直接比较
如果a,b不为number,转化为number
如果a,b为string,字符编码
null==undefined -->ture
如果a,b为对象,比较引用地址
7.全等比较
a===b
先进行数据类型比较,如果数据类型相同,比较值;反之返回false
只进行比较,不进行数据类型转化
只要数据类型不同,即为不等
null===undefined -->fals
三、逻辑运算符
1、逻辑与 &&
a&&b 同真为真,有假则假
1.如果第一个操作数为null/NaN/undefined/0/false/"",直接返回第一个操作数
2.如果第一个操作数为其他,返回第二个操作数
2、逻辑或 || 同假则假,有真为真
1.如果第一个操作数为null/NaN/undefined/0/false/"",直接返回第二个操作数
2.如果第一个操作数为其他,返回第一个操作数
3、逻辑非 ! 直接取反
!a 先将a变量转化为boolean类型,然后取反
!!a 对于任何变量连用两次逻辑非,相当于对当前变量转化为boolean
四、三目运算符
表达式?value1:value2 (满足条件执行value1,不满足执行value2)
if(today==1){
console.log("hello");
}else{
console.log("error");
}
------>简写
today==1?console.log("hello"):console.log("error")
五、一元运算符(+ - ++ - -)
1.+
+a :
number–>number
+10–>10
+10.2—>10.2
+“hello”—>NaN
+""—>0
+“100”—>100
+undefined–>NaN
+null -->0
+object–>NaN
如果a不为number类型,将a转化为number类型
2.-
-a:
-10—>-10
-null—>-0
-(-a) —>将a变量转化为number类型
3. ++
a++ :
先操作变量然后进行++
var a=10;
console.log(a++); //10
console.log(a); //11
4.++a :
先++后操作
5.- -
a- -
- -a