JS基础语法2之运算符

1. 算术运算符(JS基础语法1)
2. 关系运算符
a) 包含:==等于,===全等于,>大于,>=大于等于,<小于,<=小于等于,!=不等于,!==不全等于
b) 结果是boolean类型
c) ===首先比较操作数类型,类型相同再比较值
    ==仅比较值,可能会有类型转换

3. 逻辑运算符
a) 操作数建议是boolean类型,否则涉及到类型转换
b) &&(且):要求2个操作数的结果都是true才得到true
c) ||(或):只要1个操作数结果为true即得到true
d) !(非):操作数是true(/false)则结果是false(/true)
e) “短路”含义:
    &&运算中,如果第一个操作数的结果是false则不再计算第二个操作数;
    ||运算中,如果第一个操作数结果为true则不再计算第二个操作数
    eg:
         var a=2,b=3,c=5;
       var d=a>b&&++b<c; //b=3
                F      且   不算

         var a=2,b=3,c=5;
       var d=a<b&&++b<c;  //b=4
              T        且

         var a=2,b=3,c=5;
       var d=a>b || ++b<c;  //b=4
               F       或

         var a=2,b=3,c=5;
       var d=a<b || ++b<c;  //b=3
              T       或   不算

4. 位操作运算符(将数值转换为二进制后逐位进行相应运算)
a) 按位与“&”
b) 按位或“|”
c) 按位异或“^”:相同为0,不同为1
d) 按位取反“~”:包括符号位,(整数前提下)相当于取负再减1
  eg:
       var a=5,b=7;    a: 0101
      var c=a&b;      b: 0111
                       c: 0101
      //c=5

      var a=5,b=7;    a: 0101
      var c=a|b;      b: 0111
                      c: 0111
      //c=7

      var a=5,b=7;    a: 0101
      var c=a^b;      b: 0111
                      c: 0010
      //c=2

      var a=5,b=7;    a: 0101
      var c=~a;       c: 1010(补码)
                         1001(反码)
                         1110(原码)
      //c=-6(5*(-1)-1=-6)

5. 位移运算符
a) 左移<<:
  在不影响符号位的前提下,每左移一位相当于乘以2;
  移动位数不应该超过32,否则实际移动位数要对32进行模运算(移动33位相当于移动1位)
b) 右移>>:
  (每右移一位相当于除以2再取整,取不大于商的整数),最高位填充符号位
c) 无符号右移>>>:
  最高位填充0,如果为整数与>>相同,如果是负数则变成整数
6. 条件运算符“? :”
  此运算符是唯一一个需要3个操作数;
  判断?前面的表达式(保证表达式结果是boolean)是否成立,成立则返回:前面表达式的结果,不成立则返回:后面表达式的结果
7. 赋值运算符“=”与其他运算符搭配
8. 运算符优先级:
按以下规则:(共15级优先级)
  i. 先看操作数数量,数量少的先运算;
    1个操作数的有:算术减法表负数-a、自增自减、逻辑运算非!、位操作运算取反~
    3个操作数:?:
  ii. 再看运算符类型,算术>位移>关系>位运算>逻辑
  iii. 赋值总是最低,尽量使用括号明确运算优先级。

猜你喜欢

转载自15951837734.iteye.com/blog/2296731