1.算数运算符
+ - * / %(取余数,)
++ --
a=a+1 a++
a=a-1 a--
a=1
console.log(a) //1
console.log(a++)//1
console.log(a)//2
a=1
console.log(a) //1
console.log(++a)//2
console.log(a)//2
a++先运算后加减
++a先加减后运算
var a=1
b=a++ + ++a +a++
console.log(a) 4
console.log(b)7
var a=3
b=a++ + --a + ++a + a--
a=3
b=14
特例:
console.log()
0+0 0
-0+-0 -0
infinity +infinity infinity
-infinity +-infinity -infinity
infinity +-infinity NaN
5+5 10
"5"+5 55
5-"2" 3
"5"-"2" 3
5-true 4
5-"" 5
5-null 5
NaN-1 NaN
infinity*0 NaN
0/0 NaN
infinity/infinity NaN
"m"+1+1 m11
11+"m" 2m
"m"+(1+1) m2
a=false
console.log(a++) 0
console.log(--a) 0
a=1.2
console.log(--a) 0.19999999999999996 浮点精度误差问题
a="001"
console.log(a++) 1
console.log(--a) 1
2.赋值运算符
+= -= *= /=
a=1
a=a+3 a+=3
a=12
b=11
c=a*=b+5 //192
c=a/=b+3*(b+=4)
c=a++ -4*b --
c=b-- +a++*(a-=3 + ++b)
3.关系运算符
> < == ===恒等于 <= <= !=
a=2 数值型
b="2" 字符型
a==b true
a===b false
==代表相同, 先检查两个操作数的数据类型,
如不同可进行类型转换,再进行值得比较
如果相同,则调用===进行值的比较
null==undefined true
===代表严格相同 如果类型不同,直接判断不同 ,
如果类型不同,就一定不相等。
null===undefined false
"Black">"Mick"
"23"<"3"
"a"<"3"
4.逻辑运算符
&&都为真 ,才是真
短路运算符
js依次获取每一个操作数,将他们转换为布尔变量,如果是false,则中断后边的处理,返回这个操作数,否则继续操作,返回最后操作数的值,以上成为逻辑运算的短路运算
||有一个真为真
! 真变假,假变真