1.一元操作符:只操作一个变量的符号
var a=20;
++a;//让a的值加1
console.log(a)
var b=20;
b++; // 让b的值加1
console.log(b)
前置++,就是先把变量修改了,再取值操作
后置++,就是先取变量的值,然后再加1操作
无论前置还是后置 既有存值操作也有取值操作
2.逻辑操作符
&&
var re=A&&B
A是一个表达式,B也是一个表达式,re等于A表达式或者B表达式(如果A表达式判定为布尔表达式的值为false)re就是A,反之为B
如果re为A表达式,那么B表达式不运行
var a=(b=0)&&(c=30)
console.log(a) // 0
console.log(b) // 0
console.log(c) // 报错
0做布尔判定时会判定为false
取一个变量的数据时,(1.没有声明就会报错,2.取的是最近一次保存的数据)
js中变量保存数据(1.已经有就更新 2.没有就隐藏声明)
丨丨
var re=A丨丨B
A表达式的布尔判定为true,re=A,注意:B表达式不运行 反之re=B
这个符号在开发中,往往是优化的代码最常用的js符号
!
var a=!a 把a的值取出来,然后转化为布尔值true 再取反 再把取反的结果赋值给变量a
开关思想:把一个变量中保存一个布尔值,然后在业务执行时,修改这变量的值,为取反,然后通过变量的值执行分支业务
3.比较运算符
运算符:底层CPU会去计算,会执行操作,得到一个结果
=运算符:obj.age+1=20(错误写法)
a>20,a<20,a<=20,a>=20
4.相等判断
var a=2
var b=3
var c="5"
var d=(a+b)==c // 比较的是两个表达式的值是否相等
console.log("100"==100)//值相等,但类型不相等 number string
console.log(obj==obj2)//引用数据比较时会看是否在同一内存空间
基本数据和基本数据比较,双等号比较值是否相等,三等号比较 值和类型是否相等
引用数据和引用数据比较看是否是同一个引用
引用数据和基本数据比较 把引用数据转为字符串再比较
5.in语法
对象能否使用成员
var obj={age:2}
var re=obj.toString()
console.log(re) // true
6.三目运算符
expr1?A:B
expr1表达式会做布尔判定,判定的结果为true,就会执行表达式A,否则执行B
7.逗号运算符
var re=A,B,C,D,E,F
会把逗号隔开的表达式全部执行 最后一个运行的表达式的结果就是逗号运算符
var a,b,c,d=20
//隐式操作 var a;varb;var c;var d=20;