js运算包括:算数运算、关系运算、位运算、赋值运算以及三目运算
一、算数运算
算数运算包括:加(+)、减(-)、乘(*)、除(/)、取余(%)、递增(++)、递减(--);加减乘除就不用说了,直接从取余开始。
取余的两大用途:
1.判断奇偶数:n%2==0,为偶数,否则为奇数
2.限制一个运算的结果,不超过某个最大值
递增(++)
若n++单独使用,则++n和n++都一样;
若递增参与了运算:
1.前++(++n):n递增加一,返回新值;
2.后++(n++):n递增加一,返回旧值;
例题:
1 var n=2;
2 var r=n++ + ++n + n++;
3
4 console.log(r);
5 console.log(n);
二、关系运算:将两个值进行比较 > < >= <= == !=
只能返回两个值之一:如果成立,返回true;否则返回false
隐式转换:将所有类型都转为number类型,再比较!
特殊情况:3种:
1. 两字符串做比较:依次PK每一位字符的unicode编号
只要有一位字符,分出大小,就不再比较
比如:"3">"10" -->true
"Smith">"Scott" -->true
"m" "c"
109 99
"张东">"张无忌" -->false
"东" "无"
19996 26080
2. NaN: NaN和任何数据做大小或等于比较永远返回false
NaN和任何数据做*不等于*比较,永远返回true
isNaN(num):专门判断num是否是NaN
如果是NaN返回true,否则返回false
When:今后只要判断一个数值是否是数字或能否被转为数字,都用isNaN。如果是数字,返回false!否则返回true
3. undefined vs null
undefined == null true
===: 全等:数据类型要相同,再比较值是否相等
不带隐式转换
何时使用:只要不希望关系运算中自动隐式转换时
三、 ***逻辑运算:综合多个关系运算的结果得出最终结论
隐式类型转换:自动将每个条件转为Boolean类型
例题:
alert(4&&5);//?
alert(4||5);//?
&&是只要遇到false,它的值就为false;
||只要遇到true,它的值就为true;
返回值只能二选一:满足条件返回true,否则返回false
3个:
关系运算1&&关系运算2:
而且
两个条件必须都是true,才返回true,否则返回false
关系运算1||关系运算2:
或者
只要有一个条件为true,则返回true
只有两个条件都为false时,才返回false
!关系运算:颠倒关系运算的true/false结果
***短路逻辑:如果前一个条件已经可以得出结论,
则后续条件不再执行!
第一个汉字"一"-->"\u4e00"
最后一个汉字"\u9fa5"
四、 位运算:2个
左移:n<<m 将n的二进制,左移m位
比如:1<<3 -->1* 2的3次方
右移:n>>m 将n的二进制,右移m位
比如:64>>3 -->64/ 2的3次方 ==> 8
五、. 扩展赋值运算:5个:+= -= *= /= %=
仅讨论+=: n+=2; ==>n=n+2
将n中的值+2后,再保存回n中
何时使用:今后只要对变量中的值进行累加时,都要用扩展赋值运算。
六、***三目运算:根据不同的条件,多选*一*,返回不同的结果
语法:条件1?值1:
条件2?值2:
...?...:
默认值;
无论三目运算多么复杂,结果只能是一个值。