操作符

1) 算术运算符(数字之间运算)

+ +=	加法运算
- -=	减法运算
* *=	乘法运算
/ /=    除法运算,弱类型语言,数字统一为Number,为了保证高精度,
例: 5/2     //2.5
% %=    取余运算
例: 5%2   //1

2) 比较运算符 (数字之间的运算)

其他数据类型要进行比较运算,会先自动转换为数字类型再进行比较

>		大于
>=   	大于等于
<		小于
<=	小于等于

==,!=
  直接比较的是值,如果两个值的数据类型不一致,先转化成一致再比较
  1 == "1"    //true
  如果比较的引用数据类型,比较的是引用地址
===,!==
  先比较数据类型,如果数据类型不一致直接返回false,否则比较值
  1 === "1"   //false
  如果比较的引用数据类型,比较的是引用地址

3) 逻辑运算符(短路运算符)

操作数可以为任意数据类型

&& 
  当第一个表达式结果为真的时候,整个表达式的结果取决于第二个表达式,所以直接将第二个表达式返回
  当第一个表达式结果为加的时候,整个表达式的结果可以确定,所以直接将第一个表达式返回
  "hello " && 1   //1
  "" && 1         //""
||
  当第一个表达式结果为真的的时候,整个表达式的结果可以确定,所以直接将第一个表达式返回
  当第一个表达式结果为假的时候,整个表达式的结果取决于第二个,所以直接将第二个表达式返回
!
快速将其他数据类型转换为boolean的一种方式
  !true     //false
  !1        //false
  !!1       //true

4) 三目运算符

let result = exp1 ? exp2 :exp3;
如果exp1为真,返回exp2,否知返回exp3

5) 位运算符

原码
反码
补码
位与  &
位或  |
异或  ^

6) 拼接运算符(其他数据类型与字符串之间运算)

任意数据类型的值与字符串拼接结果都为字符串
""+undefined //"undefined"

7) 一元运算符

+
  +"12"   // 快速将其他数据类型转化为数字类型
  +1
-
  -"12"     //-12
  -(-"12")
++
  前置,先进行自增再进行其他运算
  后置,先进行其他运算在进行自增
  var a = 3;
  ++a + a++     //8
  //分析
  ++a   //a= 4
  a + a //8
  a++   //a = 5

  var a = 3;
  a++ + ++a     //8
--
 前置,先进行自减再进行其他运算
 后置,先进行其他运算在进行自减