5. 位运算

105 阅读2分钟

1. (1) 算术运算   +   -   *   /   %   ++   --  

    (2) 关系运算  >  <  >=   <=   ==   ===   !=   !== 

    (3) 逻辑运算  &&    ||   ! 

    (4) 位运算   &   |    ~   ^   <<   >>   >>> 

    (5) 赋值运算  =   +=   -=   *=   /=   %= 

    (6) 字符连接运算   + 

    (7) 条件(三目)运算  ?:

    (8) 特殊运算符  typeof  instanceof  void  delete 

2. 算术运算

减法: 

       var a = 20 - 5;

       console.log(a); // 15

       var b = "20"-"5"; // 20 - 5 = 15 

       console.log(b);

       var c = "20a" - 5; // NaN - 5 = NaN

 取余运算(结果的正负与第一个值的正负有关)

   var i = -10%3;

   console.log(i); // -1

    ++运算与--运算

    var i = 10;

    i++; // i = i+1; // 10+1=11

    console.log(i);

    var i = 10;

    i--; // i=i-1;  // 10-1=9

   console.log(i);

   var i = 10;

   i -= 3; // i = i-3;

  console.log(i);

  var i = 1;

  var j = i++; // 先把i值给j,i再做++

  console.log(i); // 2

  console.log(j); // 1

  var i = 1;

  var j = ++i; // i先做++,然后把值再给j

  console.log(i); // 2

  console.log(j); // 2

  var a = 10,b=8,c=6;

  var sum = a++ - c++ - b--;

  // a++=10,a=11

  // c++=6,c=7

  // b--=8,b=7

  // 10-6-8=-4

  console.log(sum); // -4

  console.log(a); // 11

  console.log(b); // 7

  console.log(c); // 7

3. 关系运算(判断数之间的大小,结果true,false)

  console.log(3>10); // false

  console.log("我是" > 10); // 无法比较 false

  console.log("3a" > 10); // 无法比较 false 

  console.log("3" < 10); // 3 < 10 可以 true 

  console.log("34a" > "30a"); // true // 3 > 3 --> 4> 0 --> true

=== 值相同并且数据类型相同; !== 反过来的"==="

== 值相同; !=反过来的"=="

  var num = 3;

  var str = "3";

  console.log(num == str); // true 

  console.log(num != str); // false

  console.log(num === str); // false 

  console.log(num!== str); // true

4. 逻辑运算

  && 与(必须全对才是对 --> 只要有一个错就全错,后面不看了)

  || 或 (必须全错才是错 --> 只要有一个对就全对,后面不看了)

  ! 非 (反过来的结果)

  

没有比较就返回当前值,返回当前的值来代表对错

有7个是错(跟if里的一样) ! null === null ---> null(表示false) > true

  console.log(!!"aaaa"); // !"aaaa"--> false  !false-->true

   var a = 10;

   var b = 100;

   var result = a > 12&&b < 120;

   console.log(result);  // false

   var a2 = 10;

   var b2 = 100;

   var result2 = a2 > 12 || b2 < 120;

   console.log(result2); // true

   console.log(!result2); // false

逻辑短路问题(做一半)

   var i = 10;

   var j = 10;

   var k = i-- < 0 && j++ > 0; // 已经判断出结果,后面不再计算

   console.log(i); // 9

   console.log(j); // 10

   console.log(k); // false

   var i = 10;

   var j = 10;

   var k = i-- > 0 || j++ > 0; // 已经判断出结果,后面不再计算 

   console.log(i); // 9 

   console.log(j); // 10 

   console.log(k);  // true

5. 位运算  >>(减次方)   <<(加次方)

  结果是负次方是0

   var a = 2 << 1;

   // 2的1次方 <<加  1+1=2 --> 2的2次方=4

   console.log(a); // 4 

   var b = 64 >> 1;

   // 64 --> 2的6次方 --> 2的5次方 == 32

   console.log(b);

6.赋值运算 = (赋值)

   var score = 90;

   var result = score == 100;

   console.log(result); // false 

   var a = b = c = d = 10;

   console.log(a,b,c,d); // 10,不推荐使用

简写性操作不能与多个声明一块使用,全写可以