算术运算符

“+”、”-“、”*”、”/“、”%”、”++”、”—“……
任何值与字符串相加“+”(包括“-”、“*”、“/”),都会将这些值转为字符串进行相加运算
除此之外的其余运算都将值转换为Number运算
eg:a=123 ; b = “4” ; c = a+b ; //c值为”1234”
x = 1 + 2 + “3” ; //x值为”33”
因为需要从左往右依次计算,1+2为算术运算结果为3,3+”3”为字符串运算,结果为”33”。

var a = 1;
a++; (a++的值为原变量的值1) a++先赋值后运算,a在前先赋值
++a; (++a的值为新值2) ++a先运算后赋值,a在后先运算
“—“运算符同理

逻辑运算符

&&:与 ||:或 !:非

!一般用于boolean的取反,对于非boolean将值转为boolean再取反
优先级:!最优,&&次之,||优先级最低

与&&:

a b result
1 1 1
1 0 0
0 1 0
0 0 0

一假即假
第一个值为false则不看第二个值

或||:

a b result
1 1 1
1 0 1
0 1 1
0 0 0

一真即真
第一个值为true则不看第二个值

逻辑运算从左往右解析
&&与运算中遇false则停止解析,返回false的原值;
||或运算中遇ture则停止解析,返回 true的原值,否则即从左往右依次解析返回第二个值(无true则返回第二个值)

赋值运算符

“=”将右值赋予左值
“+=” ex: a+=5;等同于a=a+5;
“-=” ex: a-=5;等同于a=a-5;
“*=”,”/=”,”%=”等同于上两运算符

关系运算符

>、=、<、>=、<=

  • 关系成立则立即返回true,否则返回false
  • 非数值比较将转化为数值再进行比较

只要涉及NaN都返回false

  • 两个字符串相比较时,比较第一位字符的字符编码(unicode编码),若第一位一样则比较第二位。

    “11”<”5” ; // true “11”<”12”; // true
    比较两字符串类型数值的大小时要进行转型 +”5”
    “11”<+”5”; //false

相等运算符

“==”值相等返回”true”,否则返回”false”(==自动做类型转换)

  1. 1 == '1';
  2. 1 == ture;
  3. 0 == false;
  4. '' == false;
  5. null == undefined;
  6. 以上都为true

“!=”值不相等返回”true”,否则返回”false
上两种相等运算符比较时若类型不同,则转换成相同类型再参与运算
“===”全等运算符,判断类型和值是否相等
“!==”不全等运算符,判断类型和值是否不相等

条件运算符

条件?语句1:语句2;
条件返回true则执行语句1,返回false则执行语句2。
ex:var max = a>b ? a : b;(将a和b中较大值返回到max)
a>b为true则返回a
a>b为false则返回b

运算符的优先级

WeChate20e043408a906f10721920130938978.png

运算符优先级.png