算术运算符
“+”、”-“、”*”、”/“、”%”、”++”、”—“……
任何值与字符串相加“+”(包括“-”、“*”、“/”),都会将这些值转为字符串进行相加运算
除此之外的其余运算都将值转换为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 == ture;
0 == false;
'' == false;
null == undefined;
以上都为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