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:
...?...:
默认值;
无论三目运算多么复杂,结果只能是一个值。